【转】 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

 

 

有时间可以进行补充。

posted on 2012-07-06 21:19  没有什么能够阻挡  阅读(229)  评论(0编辑  收藏  举报

导航