【发布时间】:2016-09-19 10:16:09
【问题描述】:
我有一个非常大的 valarray,我需要将其转换为向量,因为我正在使用的库仅将向量作为输入。我想知道是否可以在不复制的情况下从 valarray 转换为 vector 。这是我所拥有的:
#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我很确定这是不可能的。