天天看點

(轉)reverse函數:反轉容器内容

轉自https://blog.csdn.net/sunshihua12829/article/details/49929521

reverse函數可以反轉一個容器中的内容,包含在庫中。

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、複雜度

循環交換首尾元素。是以複雜度是線性的,并且循環半個數組長度。

c++
下一篇: std::reverse

繼續閱讀