私のコードにはstd::unordered_set
があり、データをstd::vector
に移動する必要があります。 std::unordered_set
に変換する前に一意の値のみが保存されるようにデータを取得するときに、std::vector
を使用しています。私の質問は、コンテンツを最も効率的にstd::vector
に移動するにはどうすればよいですか?データを移動した後、std::unordered_set
は必要ありません。私は現在次のものを持っています:
std::copy(set.begin(), set.end(), std::back_inserter(vector));
C++ 17以前は、次のことを実行できます。
_vector.insert(vector.end(), set.begin(), set.end());
_
set
の要素はconst
であるため、それらから移動することはできません。移動は単にコピーすることです。
C++ 17の後、 extract()
が得られます:
_vector.reserve(set.size());
for (auto it = set.begin(); it != set.end(); ) {
vector.Push_back(std::move(set.extract(it++).value()));
}
_
あなたのデータはdouble
sであるというコメントを与えられましたが、これは問題ではありません。