可能做的事情很愚蠢,但我不明白为什么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();
}


如果您写错<错误,您将得到疯狂的举止。

10-06 07:24