简单的程序诠释C++ STL算法系列之十七:swap_ranges

前面我们已经熟悉了swap和iter_swap,接下来我们来看看区间元素交换算法:swap_ranges,该算法用于进行两个迭代器区间元素的交换。它的使用原形如下,将迭代器区间[first1,last1)的元素,与迭代器区间[first2,first2+(last1-first1))迭代器区间元素交换其中*first1和*first2交换、*(first+1)和*(first2+1)交换、...*(last1-1)和*(first2+ last1-fitst1)-1)交换。

函数原型:

template<class ForwardIterator1, class ForwardIterator2> ForwardIterator2 swap_ranges ( ForwardIterator1 first1, ForwardIterator1 last1, ForwardIterator2 first2 ) { while (first1!=last1) swap(*first1++, *first2++); return first2; }

参数说明:

first1, last1
指出要进行交换的第一个迭代器区间 [first1,last1)。
first2
指出要进行交换的第二个迭代器区间的首个元素的迭代器位置,该区间的元素个数和第一个区间相等。

程序示例:

/******************************************************************* * Copyright (C) Jerry Jiang * * File Name : swap_ranges.cpp * Author : Jerry Jiang * Create Time : 2012-4-29 22:22:18 * Mail : jbiaojerry@gmail.com * Blog : http://blog.csdn.net/jerryjbiao * * Description : 简单的程序诠释C++ STL算法系列之十七 * 变易算法 : 区间元素交换 swap_ranges * ******************************************************************/ #include <iostream> #include <algorithm> #include <vector> using namespace std; int main () { vector<int> first (5,10); // first: 10 10 10 10 10 vector<int> second (5,33); // second: 33 33 33 33 33 vector<int>::iterator it; swap_ranges(first.begin()+1, first.end()-1, second.begin()); // print out results of swap: cout << " first contains:"; for (it=first.begin(); it!=first.end(); ++it) cout << " " << *it; cout << "\nsecond contains:"; for (it=second.begin(); it!=second.end(); ++it) cout << " " << *it; cout << endl; return 0; }

*******************************************************************************************************************************

C++经典书目索引及资源下载:http://blog.csdn.net/jerryjbiao/article/details/7358796

********************************************************************************************************************************

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值