我有一個關於從STL映射的問題。 我有我的類元素:奇怪的std :: map行爲
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
會製作一個元素的副本嗎?
Element是否在實際代碼中有動態分配的成員?因爲這不會編譯(unti_16t)。 – hmjd
'myElementPair'看起來像什麼?是什麼東西像'std :: make_pair(element.getId(),element)'?嘗試'myMAP.insert(std :: make_pair(element.getId(),element));' – andre
對不起,是uint16_t! – Safari