交换容器中两个迭代器的位置

时间:2011-08-11 09:29:42

标签: c++ stl

我想在容器中交换两个迭代器firstsecond的位置,并在操作后保持它们有效。此外,如果我让迭代器other指向与first相同的值,我也希望它保持有效(让它指向相同的值)。是否可以使用任何STL容器实现?

2 个答案:

答案 0 :(得分:2)

你尝试过交换它们吗?

#include <algorithm>

// ...

swap(first, second);

(在C ++ 0x中,#include标题<utility>明显更小就足够了。)

  

此外,如果我将迭代器other指向与first相同的值,我也希望它保持有效(保持指向相同的值)。

交换后重新分配other

swap(first, second);
other = first;

答案 1 :(得分:0)

std::list允许您将一个列表的一个列表拼接成另一个列表(从第一个列表中删除它),而不会使任何迭代器,引用或指针无效,并且源列表和目标列表可以是同一个对象。 / p>

(这是根据C ++ 11标准草案;我不知道C ++ 03标准是否说同样的事情。)