我遇到了一个问题,在我的工作我怎么能初始化unordered_map < vector<int>>?
有在我的C vector<int>
的unordered_map
++类
这样unordered_map < int, vector<int> >
所以我怎么能初始化嵌套的容器,这样,当我插入一个关键散列表 和值(矢量)将十零?
我遇到了一个问题,在我的工作我怎么能初始化unordered_map < vector<int>>?
有在我的C vector<int>
的unordered_map
++类
这样unordered_map < int, vector<int> >
所以我怎么能初始化嵌套的容器,这样,当我插入一个关键散列表 和值(矢量)将十零?
根据你在你需要一个固定大小的数组的意见陈述。 这里一个小例子:
#include <array>
#include <unordered_map>
#include <iostream>
int main(int, char const *[])
{
std::unordered_map<int, std::array<int, 10>> the_map;
std::cout << the_map[0][1] << std::endl;
the_map[0][2]++;
std::cout << the_map[0][2] << std::endl;
return 0;
}
输出将是:
0
1
如果要更改默认值,你可以这样做:
struct my_array : public std::array<int, 10> { my_array() { fill(2); } };
int main(int , char const *[])
{
std::unordered_map<int, my_array> the_map;
std::cout << the_map[0][1] << std::endl;
the_map[0][2]++;
std::cout << the_map[0][2] << std::endl;
return 0;
}
输出:
2
3
不是我最喜欢的选择,但你可以这样做。
这很简单:
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
和数据是包含十个条目的向量。
中写60零,非常感谢,但向量可能是100 0在未来 –
@Shanicky_C阅读['std :: vector'](http://en.cppreference.com/w/cpp/container/vector)及其[构造函数](http://en.cppreference。 com/w/cpp/container/vector) –
您可以使用列表初始化:
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) }
};
非常感谢,但我只是想初始化,以便当一个密钥插入哈希表并且向量将自动为零0时 –
@Shanicky_C:那么,永远只是“插入一把钥匙”,所以这个问题并不重要盟友是有道理的:你总是插入一个完整的*值*,这是一对关键和映射元素。 –
不允许用户直接访问地图,让他们去通过访问,这样可以保证矢量被填充你怎么想:
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;
}
什么是地图中的关键? –
@JoachimPileborg对不起,关键是int –
你想要那个'map [key]'返回一个'vector'用10 0初始化,当没有其他东西插入那个关键字时,就是这样? –
Johan