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构造函数来做到这一点?它的移动构造函数不接受向量。
这个解决方案实际上需要更多的字符,但它确实更直接地表达了意图:
std::unordered_set<T> ht(std::make_move_iterator(v.begin()),
std::make_move_iterator(v.end()));
Run Code Online (Sandbox Code Playgroud)