2015-03-05 2 views
-2

У меня есть std::vector< std::vector<int> > vec Вектор. Мне нужно выполнить итерацию через внешний вектор и использовать значения во внутреннем векторе (только там хранятся только 2 значения), например * it [0] и * it [1].C++ 2D векторная итерация

for (std::vector< std::vector<int> >::iterator it = vec.begin(); it != vec.end(); ++it) { 
    std::cout << *it[0] << *it[1] << std::endl; 
} 

Это не работает. Я не могу найти синтаксис о том, как получить векторные элементы из вектора, на который указывает итератор. Какие-либо предложения?

+0

«Не работает»? –

+0

Что значит «это не работает»? * он дает вам экземпляр std :: vector . может это вам помочь? – menrfa

+1

[Эта таблица приоритетов операторов] (http://en.cppreference.com/w/cpp/language/operator_precedence) может быть полезной ссылкой. –

ответ

3

Вам нужно это:

std::cout << (*it)[0] << (*it)[1] << std::endl; 

Но на самом деле вы должны заменить внутренний вектор с std::pair или struct своего собственного изготовления, так как это было бы более эффективным и более ясным, если вы только когда-либо два элемента.

+0

Я восхищаюсь, что вы это понимаете! – menrfa

+0

Я не знаю, что так трудно понять. Но спасибо @JohnZwinck за понимание меня ;-). теперь я использую структуру для внутренних значений вектора. – jazz

+1

std :: array также является хорошим вариантом, если желательно использовать индексы –

Смежные вопросы