原文地址:http://blog.sina.com.cn/s/blog_6d79d83a0100wg6g.html
前面一篇博文讲到这样的一个例子:
swap函数有一个缺点,就是无法交换2个迭代器的值,我一开始想要交换一个string中的两个字符,我是这么写的:交换pos1和pos2两个位置的值。
string str;
int pos1,pos2;
cin>>str>>pos1>>pos2;
swap(str.begin()+pos1,str.begin()+pos2);
但是CE了,说明swap函数不能交换iterator,不过后面我会介绍函数iter_swap。
正文:
如果使用iter_swap函数,那么就可以进行交换了,先看一下函数的参数:
iter_swap(a,b);//a为一个迭代器,b为另一个迭代器。
顾名思义,iter_swap的功能就是交换两个迭代器的元素。
再看一下前面的那个例子,我们要调用iter_swap函数来交换两个string中的两个字符,我们应该这么写:
string str;
int pos1,pos2;
cin>>str>>pos1>>pos2;
iter_swap(str.begin()+pos1,str.begin()+pos2);
这样就成功的交换了2个元素。
我们还可以交换两个不同容器中的元素,例如:
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
using namespace std;
int main()
{
}
输入:
abc
0 1
输出:
first string : abc
second vector char : abc
first string : bbc
second vector char : aac