C++:有没有一种方法可以使用向量内容作为键和自定义值来初始化unordered_map?

3

假设我有一个向量

vector<int> vect;
vect.push_back(2);
vect.push_back(3);

现在我想要一个unordered_map,其中2和3作为键,所有这些键的默认值都为0。

有没有一种方法可以做到这一点?

我尝试着做了以下操作:

unordered_map<int, int> myMap(vect.begin(), vect.end());

希望它能够使用向量中的内容作为键并初始化默认的整数值。但是,它不能这样做。我的意思是,我可以始终遍历向量并手动插入键值对。我只想知道是否可以在声明期间将其作为一行代码完成。

我不这么认为。一个想法是创建一个包含std::pair值的std::vector,然后使用它来初始化unordered_map。但这可能不是你要找的。我很感兴趣是否确实有一种方法可以做到这一点。 - crayzeewulf
1个回答

1

实际上,只需要一行简单的代码就足够了,但不能在声明时使用:

vector<int> vect = { 2, 3, 4};
unordered_map<int,int> map;
transform(vect.begin(), vect.end(), inserter(map, map.end()), [] (int v) { return make_pair(v, 0); });

2
更简单的写法是 for (int i : vect) map[i]; - Neil Kirk

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接