如何从向量初始化 valarray

How do I initialize a valarray from a vector?

本文关键字:初始化 valarray 向量      更新时间:2023-10-16
是否可以

/安全/好的做法编写以下内容以填充 valarray矢量的内容?

vector<int> myVect = {2,0,1,0,0,1,1,0,0,0}; // Any vector
valarray<int> myVala ( &(myVect[0]), myVect.size() );
//Edit: as suggested by Xeo, this code looks much cleaner (C++11)
valarray<int> myVala ( myVect.data(), myVect.size() );

似乎工作正常,但我想确保它在任何情况下都有效。

是的,这完全没问题。载体的内容保证是连续的(见C++标准中的[vector.overview], §1)。

请注意,从 C++11 开始,您可以直接使用初始值设定项列表初始化valarray