2015-10-26 4 views
0

Я использую список в стандартной библиотеке C++, и я хочу знать, как получить второй элемент с помощью итератора. У меня есть два итератора, и я хочу, чтобы итератор 2 был на 1 узел впереди.Как получить второй элемент в стандартном списке

intPaint(string input){ 
list<char>sequence (input.begin,input.end); 
int count; 
list<char>::iterator ptr1= sequence.begin(); 
list<char>::iterator ptr2= ?// I want to get the second node 
...//rest of the code isn't important it just checks the characters and moves 
//the iterator 
} 
+0

Возможный дубликат [Peek следующий элемент в STL контейнер] (http://stackoverflow.com/questions/3673684/peek-the-next-element-in-stl-container) –

ответ

1

Если вы действительно используете C++ 11, то std::next() должен сделать трюк:

list<char>::iterator ptr1 = sequence.begin(); 
list<char>::iterator ptr2 = std::next(sequence.begin()) 

Из documentation:

template <class ForwardIterator> 
ForwardIterator next(ForwardIterator it, 
        typename iterator_traits<ForwardIterator>::difference_type n = 1); 

Получить итератор к следующему элементу. Возвращает итератор, указывающий на элемент , который будет указывать на продвинутые n позиций.

+0

спасибо, хотя тот Бесполезный» я делаю то, что хотел, но спасибо вам все равно – btm

+0

Это мило, но если ответ неправильный, я могу удалить или исправить его :-) Вы имеете в виду, что он правильно отвечает на вопрос, но ваш вопрос не является тем, актуальная проблема? – WhiteViking

+0

Нет, я попробовал, но проблема в том, что я пытался использовать список, чтобы он не работал, и поэтому мне нужно использовать другую структуру данных. – btm