gpt4 book ai didi

c++ - 如何将元素插入 std::unordered_map>

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:38:23 25 4
gpt4 key购买 nike

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

散列键是对象类型的 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,这是当 key 不存在时发生的情况。

所以我想我需要先创建 key ,然后添加到 vector 中:

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);
}

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

还是我的做法完全错误?

最佳答案

您没有以正确的方式使用insert。这应该有效:

drawQueue.insert(std::make_pair(type, std::vector<Object*>()));

如果使用C++11,前面的语句可以简化为:

drawQueue.emplace(type, std::vector<Object*>());

通过使用这种方法,元素是就地构造的(即,不执行任何复制或移动操作)。

我还包含指向 insert 文档的链接和 emplace .

关于c++ - 如何将元素插入 std::unordered_map<int, vector<Object*>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11081308/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com