我想使用vector<float*>
存储二维数组。 float*
功能将分配fread
。但除非使用float
,否则无法获得vector<vector<float>>
内的vector<vector<float>>
大小。我不想使用vector
,因为它需要从数组转换为div.known
。那么还有其他更好的方法吗?
答案 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
的每个元素都被认为保留cols
个float
个。