![](/img/trans.png)
[英]Iterator over std::unordered_map<int, std::vector<Element>>
[英]How do I insert a element into a std::unordered_map<int, vector<Object*>>
我正在尝试创建一个 hash 的 arrays 指向我的 object 的指针。
hash 键是 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
的插入......
或者我这样做是完全错误的方式吗?
我认为这是一个简单的方法。 我的示例将创建一个 unordered_map 字符串作为键和整数向量作为值。
unordered_map<string,vector<int>> keys;
keys["a"] = vector<int>(); // Initialize key with null vector
keys["a"].push_back(1); // push values into vector.
keys["a"].push_back(5);
for(int i : keys["a"] ){
cout << i << "\t";
}
我想你可以简化它
drawQueue[type].push_back(my_obj);
如果找不到密钥,运算符[]
会为您插入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.