如何将元素插入 std::unordered_map<int, vector<Object\*>>

新手上路,请多包涵

我正在尝试创建指向我的对象的指针数组的哈希。

哈希键是对象类型的 int,数组是要渲染的对象的列表。

我想做的是:

 unordered_map<int, vector<Object*> > drawQueue;
drawQueue.clear(); // new empty draw queue

for ( ... ) {
   drawQueue.at(type).push_back(my_obj);
}


所以我对 STL 东西的细微差别不够熟悉,因为我得到一个异常说 out_of_bounds,当密钥不存在时会发生这种情况。

所以我想我需要先创建密钥,然后添加到向量:

 if (drawQueue.count(type)) {
    // key already exists
    drawQueue.at(type).push_back(my_obj);
} else {
    //key doesn't exist
    drawQueue.insert(type, vector<Object*>); // problem here
    drawQueue.at(type).push_back(my_obj);
}

但是现在我真的迷路了,因为我不知道如何创建/初始化/任何一个空的 vector 插入 unordered_map

还是我这样做完全错误?

原文由 user1463416 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 739
1 个回答

我认为您可以通过以下方式简化它

drawQueue[type].push_back(my_obj);

如果找不到密钥,操作员 [] 会为您执行插入操作。

原文由 Burton 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题