将向量移动到 unordered_set

Moving a vector into an 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()));

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

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

std::unordered_set<T> ht(std::make_move_iterator(v.begin()),
                         std::make_move_iterator(v.end()));