C 使用坐标结构的访问阵列元素

C++ access array element using a COORD struct?

本文关键字:访问 阵列 元素 结构 坐标      更新时间:2023-10-16

我想知道是否有一种简单的方法可以使用坐标结构访问二维数组的元素。例如:

COORD myCoord = {2,6};
TwoDiArray myArray;
myArray.at(myCoord) = 10;

我不知道如何正确执行此操作。有任何建议吗?

您只需要定义一个正确的函数 at()

class TwoDiArray {
   ...
   // assuming there is some 2-dimensional array representation arr
   public: 
      int& at(COORD c) noexcept { return arr[c.x][c.y]; }
};

我正在假设您的TwoDArray类型是您无法更改和访问的类型 - 嗯 - 就像二维数组一样,例如,二维的别名内置阵列(否则请参见 @Jodocus的答案)。您可以实现附件进行数组参考和COORD对象:

template <typename Array2D>
auto at(Array2D&& array, COORD c) -> decltype(array[c.x][c.y]) {
    return array[c.x][c.y];
}

(我不知道COORD成员的名称)您将使用这样的功能:

at(myArray, myCoord) = 10;