zoukankan      html  css  js  c++  java
  • 【转】 C++STL 常用 函数 用法

    这么文章概况的比较详细和全面:http://www.cnblogs.com/duoduo369/archive/2012/04/12/2439118.html

    这里重点看一下algorithm 文件中提供的算法

    1. reverse  函数(vector自带.reverse()方法)

    2. sort 函数:

       sort(v.begin(),v.end(),comp);// comp默认为升序

     #include<iostream>
     #include<vector>
     #include<algorithm>
     
     using namespace std;
     bool Comp(const int &a,const int &b)
     {
         return a>b;
     }
     int main()
     {
         vector<int> v;
         v.push_back(1);
         v.push_back(3);
         v.push_back(2);
         v.push_back(55);
         v.push_back(-1);
         v.push_back(0);
         v.push_back(2);
         v.push_back(3);
         v.push_back(4);
     
         for(vector<int>::iterator it = v.begin(); it != v.end(); ++it)
         {
             cout << *it << " ";
         }
         cout << endl;
         //默认升序
         sort(v.begin(),v.end()); 
    for(vector<int>::iterator it = v.begin(); it != v.end(); ++it) { cout << *it << " "; } cout << endl; //用降序 需要自定义一个降序函数 sort(v.begin(),v.end(),Comp);
    for(vector<int>::iterator it = v.begin(); it != v.end(); ++it) { cout << *it << " "; } cout << endl; return 0; }

    3. 排列组合算法:提供计算给定集合按一定顺序的所有可能的排列组合。

       a. next_permutation(begin,end,comp);//comp默认为 升序,因此要得到某数组的全排序,需先将该数组升序排好序,再调用next_permutation。如下:

    #include<iostream>
    #include<vector>
    #include <algorithm>
    using namespace  std;
    
    void main()
    {
        vector<char> iv;
        for (int i=0;i<3;++i)//放入3个字母
        {
            iv.push_back('c'-i);
        }
        cout<<"origin:";
        for (int i=0;i<3;++i)
        {
            cout<<iv[i];
        }
        cout<<endl;
        //升序排序
        sort(iv.begin(),iv.end());
        cout<<"sorted:";
        for (int i=0;i<3;++i)
        {
            cout<<iv[i];
        }
        cout<<endl;
        cout<<"all permutation:"<<endl;
        //全排列
        do //需先输出一遍初始序列
        {
            for (int i=0;i<3;++i)
            {
                cout<<iv[i];
            }
            cout<<endl;
        }while(next_permutation(iv.begin(),iv.end()));
    }

      原理说明见:http://www.cnblogs.com/zhengyuhong/archive/2012/02/28/2371582.html

    有时间可以进行补充。

  • 相关阅读:
    stack 栈
    链表
    2018.09.08 DL24 Day1 总结
    10.07 WZZX Day2总结
    10.06 WZZX Day1总结
    Joseph问题 (线段树)
    [POI2006]TET-Tetris 3D
    10.05FZSZ Day2模拟总结
    Tarjan求LCA
    数据结构
  • 原文地址:https://www.cnblogs.com/wenshanzh/p/2580036.html
Copyright © 2011-2022 走看看