Поменять местами два итератора в контейнере - PullRequest
4 голосов
/ 11 августа 2011

Я хочу поменять местами положение двух итераторов first и second в контейнере, а также сохранить их действительными после операции. Более того, если у меня есть итератор other, указывающий на то же значение, что и first, я хочу сохранить его действительным (оставьте его указывать на то же значение) Можно ли достичь с любым контейнером STL?

Ответы [ 2 ]

2 голосов
/ 11 августа 2011

Вы пытались поменять их местами?

#include <algorithm>

// ...

swap(first, second);

(В C ++ 0x достаточно #include значительно меньшего заголовка <utility>.)

Более того, если у меня есть итератор other, указывающий на то же значение, что и first, я также хочу сохранить его действительным (оставьте его указывающим на то же значение).:

swap(first, second);
other = first;
0 голосов
/ 11 августа 2011

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

(Это соответствует черновому стандарту C ++ 11; я не знаю, говорит ли то же самое о стандарте C ++ 03).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...