使用COORD结构的C ++访问数组元素?

时间:2017-12-13 23:04:58

标签: c++ arrays multidimensional-array coordinates coords

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

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

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

2 个答案:

答案 0 :(得分: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]; }
};

答案 1 :(得分: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;