STL からのマップについて質問があります。私は私のクラスの要素を持っています:
class Element {
Element();
uint16_t getId(void);
private:
uint16_t myId;
}
ManagerClass
私が持っているクラスにstd::map<uint16_t, Element> myMAP
、このメソッド:
void loadElement() {
std::vector<Element> theVector = ConfigManager::getInstance().load();
for(unsigned i = 0; i< theVector.size(); i++) {
Element el = theVector.at(i);
myMAP.insert(myElementPair(element.getId(), element));
}
}
ManagerClass の別のメソッドでは、データ構造 myMAP をスキミングするとクラッシュします。
void read() {
std::map<uint16_t,Element>::iterator it;
for(it=myMAP.begin(); it != myMAP.end(); ++it) {
std::cout << "The ID: " << it->first << std::endl;
}
}
2 番目の要素 (myMAP には 2 つの要素が含まれています) でクラッシュが発生し、最初のプリントには奇妙な値の ID が含まれています。何が問題なのか教えていただけますか?この方法で要素を挿入すると、要素std::map
のコピーが作成されますか?