将向量移动到 unordered_set

nm1*_*m17 5 c++ move vector unordered-set

我有一个vector<T>我想用它来初始化unordered_set<T>vector<T>以后再也不会使用了。

我的做法如下

std::vector<T> v{ /* some large amount of data, typically strings */ };
std::unordered_set<T> ht;
std::move(v.begin(), v.end(), std::inserter(ht, ht.end()));
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更直接的方法可以用unordered_set构造函数来做到这一点?它的移动构造函数不接受向量。

cig*_*ien 7

这个解决方案实际上需要更多的字符,但它确实更直接地表达了意图:

std::unordered_set<T> ht(std::make_move_iterator(v.begin()),
                         std::make_move_iterator(v.end()));
Run Code Online (Sandbox Code Playgroud)