Jam*_*lis 116
您无法将数组存储在vector
任何其他容器中.要存储在容器中的元素类型(称为容器的值类型)必须是可复制构造和可分配的.数组都不是.
但是,您可以使用array
类模板,如Boost,TR1和C++ 0x提供的类模板:
std::vector<std::array<double, 4> >
Run Code Online (Sandbox Code Playgroud)
(您想更换std::array
与std::tr1::array
使用包含在C++ TR1的模板,或者boost::array
使用从Boost库的模板或者,你可以写你自己的.这是非常简单的.)
使用:
vector<vector<float>> vecArray; //both dimensions are open!
Run Code Online (Sandbox Code Playgroud)
小智 8
以下代码中没有错误:
float arr[4];
arr[0] = 6.28;
arr[1] = 2.50;
arr[2] = 9.73;
arr[3] = 4.364;
std::vector<float*> vec = std::vector<float*>();
vec.push_back(arr);
float* ptr = vec.front();
for (int i = 0; i < 3; i++)
printf("%g\n", ptr[i]);
Run Code Online (Sandbox Code Playgroud)
输出是:
6.28
2.5
9.73
4.364
结论:
std::vector<double*>
Run Code Online (Sandbox Code Playgroud)
是另一种可能性
std::vector<std::array<double, 4>>
Run Code Online (Sandbox Code Playgroud)
James McNellis建议说.
向量的每个元素都是a float[4]
,所以当你调整大小时,每个元素都需要默认从a初始化float[4]
.我认为你尝试用int
类似的值进行初始化0
?
尝试:
static float zeros[4] = {0.0, 0.0, 0.0, 0.0};
myvector.resize(newsize, zeros);
Run Code Online (Sandbox Code Playgroud)