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