Как перебрать 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
быть постоянной ссылкой вместо копии.