可能做了一些非常愚蠢的事情,但我不明白爲什麼find
找不到與suppID
等效的密鑰。C++ std :: map :: iterator什麼也沒找到,但下標運算符返回對映射值的引用?
但是,當我通過下標運算符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...
讓我猜,'SuppID'是一個複雜的類型,你自己編寫了一個'<'。 – Yakk
@Yakk正確。這個提示讓我進一步閱讀,發現所有元素都需要自反地返回錯誤。目前他們沒有,所以我認爲確實是這個問題。 –