如果使用vector <float *>,如何获取数组大小

时间:2015-10-01 03:55:57

标签: c++ vector

我想使用vector<float*>存储二维数组。 float*功能将分配fread。但除非使用float,否则无法获得vector<vector<float>>内的vector<vector<float>>大小。我不想使用vector,因为它需要从数组转换为div.known。那么还有其他更好的方法吗?

2 个答案:

答案 0 :(得分:3)

使用vector<vector<float>>。矢量的一个要求是元素是氦气存储的。更正式地说(来自http://en.cppreference.com/w/cpp/container/vector):

  

元素是连续存储的,这意味着元素可以   不仅可以通过迭代器访问,还可以使用常规偏移   指向元素的指针。这意味着指向一个元素的指针   vector可以传递给任何需要指针的函数   数组的元素。

这意味着你可以这样做:

vector<float> x{1.0, 2.0};
float *x1 = &x[0];

答案 1 :(得分:0)

由于您不想使用vector<vector<float>>,因此可以选择创建自己的数据类型。

struct MyArray
{
   std::vector<float*> array;
   size_t cols;
};

这假定MyArray不负责分配和取消分配float* s的内存。

array.size()等于行数,array的每个元素都被认为保留colsfloat个。