一个关于STL map的问题,比较困扰...
Being *target = static_cast<Being *> (*i);
std::map<Being *, int, std::greater<Being *> >::iterator angerIterator;
angerIterator = mAnger.find(target);// error C2679: 二进制“=”: 没有找到接受“std::_Tree<_Traits>::iterator”类型的右操作数的运算符(或没有可接受的转换)
if (angerIterator != mAnger.end())// error C2679: 二进制“!=”: 没有找到接受“std::_Tree<_Traits>::iterator”类型的右操作数的运算符(或没有可接受的转换)
{
// something...
}
有点犯迷糊了...
有没有对map熟悉的请麻烦讲解下,thx!
...全文
相关推荐
effective stl
使用empty代替size()与零比较:容器的empty方法直接返回是否为空,比检查size是否为零更高效且清晰。5.
Effective STL
- **关键点**: - 了解并避免“最令人困扰的解析”问题。 - 使用显式类型转换或初始化列表等技巧来避免潜在错误。**7.
AW - Effective STL
**Item 6: 对 C++ 中最困扰人的解析保持警觉。**C++ 的语法有时会导致意料之外的结果。例如,当一个函数声明和一个变量声明冲突时,编译器可能会将后者解释为前者,导致错误的代码行为。
C++98 STL的map 如何避免自动排序.md
"C++98 STL的map避免自动排序的方法是通过自定义比较函数对象。C++11引入了unordered_map,但在C++98中,map内部基于红黑树实现,会按照key的自然顺序进行排序。"
STL_map初始化和排序
STL Map 的排序`map`内部自动保持元素的排序,这是因为它的底层实现是红黑树。在`map`中,排序是基于键(key)的比较。


