おそらく何か非常にばかげたことをしていますが、なぜfind
がsuppID
に相当するキーを持つ要素を見つけられないのか分かりません。C++ std :: map :: iteratorは何も見つかりませんでしたが、添字演算子はマップされた値への参照を返しますか?
しかし、添え字演算子suppID
を渡すと、マップされた値への参照が返されます(何か見つかったことを暗示していますか?)。
std::map
が
添字演算子を使用するときにまだ存在しない新しいキー値のデフォルト値を挿入しているためだ
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 Correct。そのヒントは私にさらに読ませ、すべての要素が反射的に誤って返る必要があることを発見しました。現在彼らはしていないので、それは確かに問題だと思う。 –