我正在使用std::unordered_map
,我想用它來存儲指向我動態創建的對象的指針,它使用new
。C++ std :: unordered_map
我可以創建對象並且插入方法成功;但是,當我嘗試使用索引解析地圖中的特定對象時,顯示列表中的所有項目都映射到我在地圖中指向的最後一個項目。
typedef std::unordered_map<__int64, Session*> HashDict;
HashDict dict;
void Sessions::Insert()
{
Session* newSession = new Session;
newSession->setId(sessionCounter++);
dict.insert(HashDict::value_type(newSession->Id(), newSession));
}
void Sessions::Find(__int64 id)
{
HashDict::iterator it = dict.find(id);
if(it != dict.end())
{
Session* s = it->second;
std::cout << "Search for: " << id << std::setw(3) <<
" found @ location: " << it->second << std::setw(3) <<
" with value: " << s->Id() << std::endl;
}
}
001D4F50 0
001D5038 1
001D50D0 2
001D5378 3
001D5410 4
001D54A8 5
001D5540 6
001D55D8 7
001D5670 8
001D4E50 9
Search for: 5 found @ location: 001D54A8 with value: 9
注意5
點在5
位置(從插件),但它說,該值是9
。
我在做什麼錯?
你可以發佈'Session'的定義嗎? –
@downvoters我希望你不要因爲你不喜歡谷歌的董事長而下決心! –
創建後Id可以更改嗎? – bdonlan