这么文章概况的比较详细和全面: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
有时间可以进行补充。