1. 程式人生 > >reverse函式:反轉容器內容

reverse函式:反轉容器內容

reverse函式可以反轉一個容器中的內容,包含在<algorithm>庫中。

1、函式原型

reverse函式等同於下面的程式碼:

template <class BidirectionalIterator> void reverse (BidirectionalIterator first, BidirectionalIterator last)
{
     while ((first!=last)&&(first!=--last))
     {
          std::iter_swap (first,last);
          ++first;
     }
}
reverse函式使用iter_swap來交換兩個元素。

2、引數:first、last

first和last是雙向迭代器型別,reverse函式反轉的範圍是[first,last),所以包括first指向的元素,不包括last指向的元素。

3、返回值

reverse函式沒有返回值。

4、例子

// reverse algorithm example
#include <iostream>    
// std::cout
#include <algorithm>   
// std::reverse
#include <vector>      
// std::vector

int main () {
    std::vector<int> myvector;
    // set some values:
    for (int i=1; i<10; ++i) myvector.push_back(i);   // 1 2 3 4 5 6 7 8 9
    std::reverse(myvector.begin(),myvector.end());    // 9 8 7 6 5 4 3 2 1
    // print out content:
    std::cout << "myvector contains:";
    for (std::vector<int>::iterator it=myvector.begin(); it!=myvector.end(); ++it)
        std::cout << ' ' << *it;
    std::cout << '\n';
    return 0;
}

輸出:
myvector contains: 9 8 7 6 5 4 3 2 1
5、複雜度 迴圈交換首尾元素。因此複雜度是線性的,並且迴圈半個陣列長度。