Элемент массива доступа C++, использующий структуру COORD?

Мне было интересно, если есть простой способ получить доступ к элементу двумерного массива с помощью структуры COORD. например:

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

Я понятия не имею, как правильно это сделать. Какие-либо предложения?

2 ответа

Вы просто должны определить правильную функцию 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;
Другие вопросы по тегам