将向量的元素添加到无序集合中

47

有没有一种简单的方法将vector的所有元素添加到unordered_set中?它们都是同一类型。目前,我正在使用for循环,想知道是否有更好的方法。

2个回答

64

如果你正在构建unordered_set,则:

std::vector<int> v;
std::unordered_set<int> s(v.begin(), v.end());

下一步该怎么做?我已经尝试过这个,但似乎没有构建集合。例如:vector<int> v; set<int> s(v.begin(), v.end()); for(...) // here I push back elements for( auto i : s) cout << i; 没有输出任何内容,并且调试显示该集合为空。 - 101is5

29

如果我的语法有任何小错误,请原谅,但您可以尝试std::copy函数,它是为此目的而设计的。

std::vector<int> v;
std::unordered_set<int> s;
std::copy(v.begin(),v.end(),std::inserter(s,s.end()));

2
需要使用std::inserter来向关联容器中插入元素。 - James McNellis
是的,我知道我漏掉了什么,已经修复了。 - Karthik T
2
如果容器重新哈希,s.end()是否仍然有效? - Johannes Schaub - litb
如果v为空,则会将0添加到s中! - James Harper

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