簡單的程式詮釋C++ STL演算法系列之十七:swap_ranges

來源:互聯網
上載者:User

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

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.