我正在寻找一个 C++ 多维存储对象,它将其数据存储在一个连续的内存块中,并且在其中一个维度上是动态的。你能推荐我如何处理这个问题吗?
例子:
std::vector<std::array<int, 250>> pixelsMarker;
// The array stores its data in a continuous block
// but the vector data not continuous, because
// an std::array is a complex object
std::vector<int[250]> pixelsMarker
// This is an invalid definition of a vector
最佳答案
为什么不创建自己的数据访问器并只使用一个数组?
例如:
std::vector<int> myArray(250*100);
这里您创建了 100 个数组,每个数组的大小为 250(这是一个大小为 250*100 的单个数组)。要访问数组 N
中的元素,请使用函数
int accessor(int N, int elementNum)
{
return N*250 + elementNum;
}
这将为您提供第 N
数组中的元素 elementNum
。
当然,您始终可以选择从 std::vector
继承或创建您自己的类来为您执行此操作。
关于c++ - 半动态多维存储对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39599286/