c++ - 使用绝对元素编号访问二维数组的元素

标签 c++ arrays

<分区>

我有一个二维数组,我通常想像这样访问其元素:

val = my_array[row][col];

但我有时也需要使用绝对索引访问元素,其中行和列是未知的。给定元素的“绝对”索引可以计算如下:

abs_idx = row*numCols + col;

我正在考虑按如下方式实现这一目标

mydatatype *my_array_abs = new mydatatype[numRows*numCols];
mydatatype **my_array = new mydatatype*[numRows];
for (int ii=0; ii<numRows; ii++)
{
    my_array[ii] = &my_array_abs[ii*numCols];
}

这是实现我的目标的合适方法吗,或者我是否应该预料到会遇到任何问题或效率低下?

最佳答案

要实现你想要的,你需要改变你的线路:

mydatatype *my_array;

收件人:

mydatatype **my_array = new mydatatype*[numRows] ;

注意:我发现这种方法只有一个问题,即您需要连续的内存块。 否则,您的方法完全没问题。

关于c++ - 使用绝对元素编号访问二维数组的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26002340/

相关文章:

java - 将数组设置为对象属性

Visual Studio 2010 上的 C++ : Cannot assign string to a string (mixed types are not supported)

c++ - 带有虚拟 COM 端口的 USB 串行设备 - 如果将 CreateFile() 与 USB 路径一起使用,ReadFile() 读取零字节

.net - 为什么 dotnet 1.1 在 ArrayList.GetRange 之后不能强制转换?

arrays - fscanf 一个数字并将每个数字存储在数组中

python - Python 中的伪指针功能

C++ 更新结构

c++ - 使用 COM 在 Windows 上的本地计算机上进行进程间通信

c++ - 简单的 OpenCV 程序不会运行;没有错误。现在怎么办?

C++11 函数参数