c++ - 半动态多维存储对象

标签 c++ memory-management multidimensional-array heap-memory

我正在寻找一个 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/

相关文章:

iphone - 诊断自动释放错误(EXC_BAD_ACCESS)

php - 在两个 csv 文件之间用 PHP 实现左连接

php - 如何从 MySQL 表中对大型多维数组进行排序

javascript - 使用映射返回多维数组中的第一个索引

c++ - 如何将代码签名算法的 OID 从 CRYPT_ALGORITHM_IDENTIFIER 转换为人类可读的字符串?

c++ - 在单独的命名空间中定义基类和派生类时出现编译错误

c++ - 在 C/C++ 或任何其他此类语言中将 & 符号应用于变量或数据类型时返回什么类型的地址?

c++ - 在类中分配过多动态内存时,Qt 会抛出错误

c++ - String.substring 不返回 true

c++ - 递归搜索 C++ 调用图以查找特定函数