如何从向量初始化 valarray?

Posted

技术标签:

【中文标题】如何从向量初始化 valarray?【英文标题】:How do I initialize a valarray from a vector? 【发布时间】:2014-12-02 12:48:15 【问题描述】:

编写以下内容是否可以/安全/良好的做法以便用 向量的内容?

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() );

它似乎工作正常,但我想确保它适用于任何情况。

【问题讨论】:

这些天来,我会质疑使用valarray 是否是一种好习惯。它是标准库的害群之马。 这是为什么呢?我打算用它们来选择带有掩码和切片的子集。我不熟悉这种结构,但乍一看似乎很有用。 它从未流行过。大多数实现实际上都没有得到很好的优化,这违背了使用它的意义。这有点像先有鸡还是先有蛋的情况。 【参考方案1】:

是的,这很好。 vector 的内容保证是连续的(参见 C++ 标准中的[vector.overview], §1)。

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

【讨论】:

会更好一点(除了初始化列表,如果数据来自其他地方):std::valarray&lt;int&gt; vla(vec.data(), vec.size()) 使用 .data() 确实更具可读性,我编辑了我的消息以包含此符号。

以上是关于如何从向量初始化 valarray?的主要内容,如果未能解决你的问题,请参考以下文章

如何在DSP20335的RAM中初始化PIE 向量表

如何在DSP20335的RAM中初始化PIE 向量表

如何从 Tf-IDF 向量中选择 K-mean 的初始聚类

我该如何生成初始化向量?

在单元测试中初始化 unique_ptr

SWIG:如何将复数向量从 C++ 传递到 python