C++中的iter_swap函数的应用

原文地址: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()
{
    string str;
    vector <char> V;
    cin>>str;
    V.resize(str.length());
    copy(str.begin(),str.end(),V.begin());
    cout<<"first string : "<<str<<endl;
   
    cout<<"second vector char: ";
    for(vector <char> ::iterator iter=V.begin();iter!=V.end();iter++)
        cout<<*iter;
    cout<<endl;
   
    int pos1,pos2;
    cin>>pos1>>pos2;
    iter_swap(str.begin()+pos1,V.begin()+pos2);
   
    cout<<"first string : "<<str<<endl;
    cout<<"second vector char: ";
    for(vector <char> ::iterator iter=V.begin();iter!=V.end();iter++) cout<<*iter;
    cout<<endl;
    return 0;
}
输入:
abc
0 1
输出:
first string : abc
second vector char : abc
first string : bbc
second vector char : aac
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值