0

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

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

我不知道如何正确地做到这一点。有什么建议么?

4

2 回答 2

0

您只需要定义一个适当的功能at()

class TwoDiArray {
   ...
   // assuming there is some 2-dimensional array representation arr
   public: 
      int& at(COORD c) noexcept { return arr[c.x][c.y]; }
};
于 2017-12-13T23:10:19.560 回答
0

我假设您的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;
于 2017-12-13T23:11:56.653 回答