[英]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.