我正在使用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