Как перебрать 2D вектор с неизвестным размером?

Я пытаюсь получить доступ к значениям int внутри 2D-вектора, который имеет неизвестное количество строк и столбцов.

Я попробовал это:

for(vector<int> vec : matrix){
        for(int i : vec){
            queue_lista.push(vec[i]);
        }
    }

и это:

vector< vector<int> >::iterator row;
vector<int>::iterator col;
for (row = nums.begin(); row != nums.end(); row++) {
    for (col = row->begin(); col != row->end(); col++) {
        //queue_lista.push(nums[col][row]);
    }
}

1 ответ

В вашем первом фрагменте, i принимает значения в векторе, а не индексы. Так что вы должны просто использовать push(i) не vec[i],

В вашем втором фрагменте, col это итератор, а не индекс. Таким образом, вы не должны использовать это с подпиской либо. *col это ваши данные.


Замечание по производительности: первый фрагмент будет гораздо более эффективным, если вы позволите vec быть постоянной ссылкой вместо копии.

Другие вопросы по тегам