STL_算法_逆转(reverse,reverse_copy)

C++ Primer 学习中。。

简单记录下我的学习过程 (代码为主)

//全部容器适用

reverse(b,e)        //逆转区间数据

reverse_copy(b,e,b2)

/**------http://blog.csdn.net/u010579068------**/
#include<iostream>
#include<cstdio>
#include<string>
#include<vector>
#include<list>
#include<deque>
#include<algorithm>
using namespace std;

/*****************************************
//全部容器适用
reverse(b,e)        //逆转区间数据
reverse_copy(b,e,b2)
*****************************************/
/**----------------------------------------------------------------------------------
STL算法 - 变序性算法

reverse()           //逆转
reverse_copy()
rotate()            //旋转
rotate_copy()
next_permutation()
prev_permutation()
random_shuffle()
partition()
stable_partition()
----------------------------------------------------------------------------------**/
/*************************************************************************************
std::reverse                     全部排序容器适用                           algorithm
--------------------------------------------------------------------------------------
<algorithm>template <class BidirectionalIterator>
  void reverse ( BidirectionalIterator first, BidirectionalIterator last);

//eg:
template <class BidirectionalIterator>
  void reverse ( BidirectionalIterator first, BidirectionalIterator last)
{
  while ((first!=last)&&(first!=--last))
    swap (*first++,*last);
}
*************************************************************************************/

/*************************************************************************************
std::reverse_copy                   全部排序容器适用                        algorithm
--------------------------------------------------------------------------------------
template <class BidirectionalIterator, class OutputIterator>
  OutputIterator reverse_copy ( BidirectionalIterator first,
                                BidirectionalIterator last, OutputIterator result );
//eg:
template <class BidirectionalIterator, class OutputIterator>
  OutputIterator reverse_copy ( BidirectionalIterator first,
                                BidirectionalIterator last, OutputIterator result )
{
  while (first!=last) *result++ = *--last;
  return result;
}
*************************************************************************************/

int main()
{
    vector<int> myvector;
    vector<int>::iterator it;

    // set some values:
    for (int i=1; i<10; ++i) myvector.push_back(i); // 1 2 3 4 5 6 7 8 9

    reverse(myvector.begin(),myvector.end());       // 9 8 7 6 5 4 3 2 1

    // print out content:
    cout << "myvector contains:";
    for (it=myvector.begin(); it!=myvector.end(); ++it)
        cout << " " << *it;
    cout << endl;

     int myints[] = {1,2,3};

  cout << "The 3! possible permutations with 3 elements:\n";

  sort (myints,myints+3);
  reverse (myints,myints+3);

  do {
    cout << myints[0] << " " << myints[1] << " " << myints[2] << endl;
  } while ( prev_permutation (myints,myints+3) );

    /**-------------------------------------------------------------------------------------**/
//    int myints[] = {1,2,3,4,5,6,7,8,9};
    deque<int> mydeque;
    deque<int>::iterator iq;

    mydeque.resize(9);

    reverse_copy (myvector.begin(), myvector.end(), mydeque.begin());

    // print out content:
    cout << "mydeque  contains:";
    for (iq=mydeque.begin(); iq!=mydeque.end(); ++iq)
        cout << " " << *iq;
    cout << endl;

    return 0;
}

时间: 2024-11-09 13:43:45

STL_算法_逆转(reverse,reverse_copy)的相关文章

STL_算法(21)_ STL_算法_填充新值

STL_算法_填充新值 fill(b, e, v) fill(b, n, v) generate(b, n, p) generate_n(b, n, p) #include<iostream> #include<algorithm> #include<vector> #include<list> // #include<string> using namespace std; int main() { list<string> sli

STL_算法_查找算法(find、find_if)

C++ Primer 学习中. .. 简单记录下我的学习过程 (代码为主) find . find_if /**********************线性查找O(n) find(); find_if(); 注意: 1.假设是已序区间,能够使用区间查找算法 2.关联式容器(set,map)有等效的成员函数find();时间复杂度O(log(n)) 3.string 有等效的成员函数find(); **********************/ #include<iostream> #inclu

STL_算法_依据第n个元素排序(nth_element)

C++ Primer 学习中... 简单记录下我的学习过程 (代码为主) //全部容器适用 nth_element(b,n,e) nth_element(b,n,e,p) 对照:partition()算法 /**------http://blog.csdn.net/u010579068------**/ #include<iostream> #include<cstdio> #include<string> #include<vector> #include

STL_算法_局部排序(partial_sort、partial_sort_copy)

C++ Primer 学习中... 简单记录下我的学习过程 (代码为主) /***************************************** // partial_sort(b,se,e) partial_sort(b,se,e,p) partial_sort_copy(sb,se,db,de) partial_sort_copy(sb,se,db,de,p) *****************************************/ /**-------------

STL_算法_交换(swap_ranges)

C++ Primer 学习中... 简单记录下我的学习过程 (代码为主) 所有容器适用 swap_ranges(b,e,b2)  //优点: 可局部交换.可以在不同类型容器间交换 注意:下列两种方法也是交换算法 1.容器的swap()成员函数 2.赋值操作 /**------http://blog.csdn.net/u010579068------**/ #include<iostream> #include<cstdio> #include<string> #incl

STL_算法(22)_ STL_算法_替换算法

replace(b, e, ov, nv) replace_if(b, e, p, v) // 一边复制一遍替换 replace_copy(b1, e1, b2, ov, nv) replace_copy_if(b1, e1, b2, p, v) // 带有一个函数对象或者规则 #include<iostream> #include<algorithm> #include<list> // #include<functional> using namespa

STL_算法_查找算法(lower_bound、upper_bound、equal_range)

C++ Primer 学习中. .. 简单记录下我的学习过程 (代码为主) //全部容器适用(O(log(n)))    已序区间查找算法 lower_bound()        //找第一个符合的元素,返回位置迭代器 upper_bound()        //找最后一个符合的元素.返回位置迭代器 equal_range()        //找一对迭代器pair(<>,<>) 关联式容器有等效的成员函数.性能更佳 #include<iostream> #incl

STL_算法_元素计数(count、count_if)

C++ Primer 学习中... 简单记录下我的学习过程 (代码为主) count . count_if #include<iostream> #include<cstdio> #include<cstring> #include<vector> #include<set> #include<algorithm> using namespace std; /*********************** count count_if

STL_算法_替换(replace、replace_copy、replace_if、replace_copy_if)

C++ Primer 学习中... 简单记录下我的学习过程 (代码为主) 所有容器适用 replace(b,e,ov,nv)      //把oldvalue替换成newvalue replace_if(b,e,p,v)     //把符合p条件的替换成v replace_copy(b1,e1,b2,ov,nv) replace_copy_if(b1,e1,b2,p,v) /**------http://blog.csdn.net/u010579068------**/ #include<ios