我在工作中遇到了一个问题
在我的unordered_map
类中有一个vector<int>
上的c++
像这样的unordered_map < int, vector<int> >
那么,如何初始化嵌套容器,以便当我插入哈希表的键时,值(向量)将为10?
发布于 2014-07-24 08:57:01
您可以使用列表初始化:
std::unordered_map<int, std::vector<int>> m
{ { 2, std::vector<int>(10, 0) }
, { 5, std::vector<int>(10, 0) }
, { 6, std::vector<int>(10, 0) }
, { 9, std::vector<int>(10, 0) }
};
发布于 2014-07-24 08:56:17
很简单:
std::unordered_map<int, std::vector<int>> my_map;
my_map[123] = std::vector<int>{1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
现在,my_map
将包含一个条目,其中键123
和数据是包含10个条目的向量。
发布于 2014-07-24 09:32:09
不要允许用户直接访问地图,让他们通过访问器,这样您就可以确保以您想要的方式填充向量:
class FooBar
{
public:
// access the map
std::vector<int>& operator[](int n);
private:
std::unordered_map<int, std::vector<int>> map;
};
std::vector<int>& FooBar::operator[](int n)
{
auto iter = map.find(n);
if (iter == map.end()) // index not found, so insert it
iter = map.emplace(n, std::vector<int>(10, 0)).first;
return *iter;
}
https://stackoverflow.com/questions/24929142
复制相似问题