我对来自 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;
}
}
我在第二个元素(myMAP 包含 2 个元素)上崩溃了,第一个打印的 ID 值很奇怪。你能提出什么问题吗?当我以这种方式插入元素时,会std::map
复制元素吗?