前面我们已经熟悉了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
********************************************************************************************************************************