可能做的事情很愚蠢,但我不明白为什么find
找不到键与suppID
等效的元素。
但是,当我传递下标运算符suppID
时,它返回对其映射值的引用(暗示它找到了对吗?)。
typedef std::map<SuppID, Supplement *> Supplement_t;
Supplement_t::iterator it = supplements.find(suppID); //it = supplements.end()
cout << "Supplement name: " << supplements[suppID]->getName() << endl; // "Cytogainer"
... // Returns few of many other data members I tested...
最佳答案
为关联容器编写<
时,很容易出错。
简单的方法是编写一个返回元组的函数或方法,该元组可以是引用,值或混合。如果foo
则调用。
friend bool operator<( self const& lhs, self const& rhs ){
return lhs.foo()<rhs.foo();
}
如果您写错
<
错误,您将得到疯狂的举止。