2012-03-24 3 views
1

Для того, чтобы получить следующий элемент в списке, нужно просто увеличить итератор. Однако из какого-либо элемента в списке есть ли способ напрямую перейти к заголовку списка? Например, если итератор указывает на третий элемент списка, есть ли способ перейти к началу списка, кроме повторения назад?Доступ к головке из любого места STL-списка

Благодаря

ответ

3

Нет, потому что std::list предназначен для моделирования дважды связанный список (и обычно реализуется как один), и в дважды связанный список, каждый элемент имеет только указатели на предыдущий и следующий элемент в список.

0

Нет, и вы даже не можете сделать это только на основе одного итератора: у вас нет способа узнать, действительно ли итератор, и разрешено ли вам увеличивать или уменьшать его!

Единственный способ, которым вы могли это сделать, было бы сравнить ваш итератор (предположительно действительный) с x.begin() и x.end(), но как только вы их получите, у вас уже есть итератор в голове списка, и вопрос становится спорным.

Итераторы должны всегда считаться входящими парами [first, last), а контейнеры предоставляют такую ​​пару с их функциями-членами begin()/end().

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