나는 내가 사용하고있는 라이브러리 만 벡터를 입력으로 사용하기 때문에 벡터로 변환해야하는 매우 큰 valarray가 있습니다. 복사하지 않고 valarray에서 vector로 변환 할 수 있는지 궁금합니다. 여기에 내가 가진 무엇 :복사하지 않고 벡터에 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'를 사용하는 것이 불가능하다는 것을 확신합니다. –