繁体   English   中英

C ++ - Float Arrays的向量

[英]C++ - Vector of Float Arrays

我目前正在尝试创建一个包含浮点数组的向量。 我有一段难以忍受的时间。

我有以下代码:

float testArray[4] = {20, -3.14/2, 5, -3.14/2};
std::vector<float[4]> inputVector;
std::vector<float[4]>::iterator it = inputVector.begin();
inputVector.insert(it, testArray);

我一直收到一个错误说“数组必须使用大括号括起来的初始化程序初始化”和“无效的数组赋值”。 我用int的向量(而不是数组的向量)尝试了相同的代码,并且没有任何问题。

我认为存在一个我不理解的根本问题。

任何帮助表示赞赏!

使用std::array 通常不应在现代C ++代码中使用C风格的数组。

#include <vector>
#include <array>

int main()
{
  std::array<float, 4> testArray{{20, -3.14/2, 5, -3.14/2}};
  std::vector<std::array<float, 4>> inputVector;
  std::vector<std::array<float, 4>>::iterator it = inputVector.begin();
  inputVector.insert(it, testArray);
}

阅读这些问题/答案以获取更多信息:


请注意,这将复制数组及其所有内容。 如果要引用现有的testArray实例,请创建一个std::vector<std::array<float, 4>*>并在将其插入向量时获取实例的地址: inputVector.insert(it, &testArray);

这个怎么样 :-

float t[4] = {20, -3.14/2, 5, -3.14/2};
float *testArray=t;
std::vector<float*> inputVector;
std::vector<float*>::iterator it = inputVector.begin();
inputVector.insert(it, testArray);

如果你使用std::array<float, 4>而不是in-built arrays会更好。 您以前的代码的问题是您尝试了类似的事情: -

float a[4] {1.1, 2.2, 3.3, 4.4};
float b[4] = a;   // illegal conversion of float[] to float*

因此,您的代码曾经失败过

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM