У меня действительно большой 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' Я уверен, что это невозможно. –