Что означает в C ++ выражение «выражение должно иметь тип указателя на объект» и «подстрочный индекс требует массив или тип указателя»? - PullRequest
0 голосов
/ 22 марта 2020

Я начал писать функцию, которая получала бы двумерный вектор размера x размера и возвращала копию того, на что она похожа, когда она повернута на 90 градусов по часовой стрелке. Я получил здесь:

std::vector<int> rotate90(std::vector<int> orig, int size) {
    std::vector<std::vector<int>> r;
    r.resize(size);
    for (int i = 0; i < size; i++) {
       r[i].resize(size);
       for (int j = 0; j < size; j++) {
          r[i][j] = orig[size - j - 1][i];
       }
    }
}  

Тем не менее, он говорит, что есть проблема с последней строкой: «выражение должно иметь тип указателя на объект» и «индекс требует типа массива или указателя». Я довольно новичок в использовании C ++, поэтому я посмотрел некоторые вещи об использовании указателей с векторами, но я все еще не уверен, как реализовать их так, как это будет работать здесь.

1 Ответ

2 голосов
/ 22 марта 2020

Проблема в том, что orig не является двухмерным вектором.

std::vector<int> orig

является одномерным вектором, поэтому

orig[size - j - 1][i]

не компилируется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...