私はベクトルに変換する必要がある非常に大きなvalarrayを持っています。私はそれがコピーせずにvalarrayからベクトルに変換することが可能かどうか疑問に思っています。ここで私が持っているものです。コピーしていないベクトルへのvalarrayの変換
#include <vector>
#include <valarray>
int main() {
std::valarray<double> va{ {1, 2, 3, 4, 5} };
//Error: cannot convert from 'initializer list' to 'std::vector<eT,std::allocator<_Ty>>'
//std::vector<double> v1{ std::begin(va), va.size() };
//Error: cannot convert from 'std::valarray<double>' to 'std::vector<eT,std::allocator<_Ty>>'
//std::vector<double> v2{ std::move(va) };
// Works but I'm not sure if it's copying
std::vector<double> v3;
v3.assign(std::begin(va), std::end(va));
}
assign上のドキュメントは関数は「現在の内容を置き換え、それに応じてサイズを変更し、ベクトルに新しい内容を割り当てます。」と述べています。それは私にそれがコピーのように聞こえる。コピーせずにそれを行う方法はありますか?
'std :: valarray'と' std :: vector'では、私はかなり不可能だと確信しています。 –