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

    有时间可以进行补充。

  • 相关阅读:
    六、开闭原则
    五、迪米特法则
    绘制禁用图像
    程序自启动的问题
    金山也开始做“QQ”了
    TextBox只能输入数字的两种解决办法
    Chrome的一点小问题
    OOAD读书笔记(三):需求变化
    OOAD读书笔记(六):如何解决大问题
    J道,学习分析设计的Java社区
  • 原文地址:https://www.cnblogs.com/wenshanzh/p/2580036.html
Copyright © 2011-2022 走看看