导航
1.sort()函数使用 //排序从小到大或者从大到小
2.random_shuffle() //指定范围内数据随机进行排序
3.merge() //将两个有序容器中的数据存入到另一个容器中
4.reverse() //将容器中的数据反转
——————————————————————————————————————
1.sort()函数使用
原型:sort(iterator beg,iterator end,_func)
iterator beg:迭代器初始位置
iterator end:迭代器末尾位置
_func():可以使用内建函数对象
两种用法
第一种直接调用: (按照从小到大排序)
#include <iostream> using namespace std; #include <vector> #include <algorithm> //给for_each遍历提供函数,可以见前面遍历算法 void print(int val) { cout<<val<<" "; //输出形式可以自己定 } void test() { vector<int> v; v.push_back(1); v.push_back(5); v.push_back(4); v.push_back(9); //从小到大排序 //******************************* sort(v.begin(),v.end()); //只需要放初始位置及最后位置的迭代器 //******************************* for_each(v.begin(),v.end(),print); } int main() { test(); return 0; }
第二种使用内建函数: greater< int>()
注意使用之前:要加头文件#include < functional>
#include <iostream> using namespace std; #include <vector> #include <algorithm> #include <functional> //使用内建函数要加functional头文件 void print(int val) { cout<<val<<" "; //输出形式可以自己定 } void test() { vector<int> v; v.push_back(1); v.push_back(5); v.push_back(4); v.push_back(9); //******************************* //从大到小排序 sort(v.begin(),v.end(),greater<int>()); //添加greater<int>(),在前面STL内建函数中有解释 ,是大于的意思 //******************************* for_each(v.begin(),v.end(),print); } int main() { test(); return 0; }
———————————————————————————————
2.random_shuffle()函数使用
原型:random_shuffle(iterator beg,iterator end)
iterator beg:迭代器初始位置
iterator end:迭代器末尾位置
注意为了每次结果都不相同要加随机种子srand((unsigned int)time(NULL));
#include <iostream> using namespace std; #include <vector> #include <algorithm> #include <ctime> //配置随机种子需要 void print(int val) { cout<<val<<" "; //输出形式可以自己定 } void test() { srand((unsigned int)time(NULL)); //创建随机种子需要头文件#include < ctime> vector<int> v; for(int i=0;i<10;i++) v.push_back(i); //******************************* random_shuffle(v.begin(),v.end()); //只需要放入范围中的迭代器即可打乱 //******************************* for_each(v.begin(),v.end(),print); } int main() { test(); return 0; }
——————————————————————————————————————
3.merge()函数使用
原型:merge(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator beg3)
iterator beg1:迭代器1初始位置
iterator end1:迭代器1末尾位置
iterator beg2:迭代器2初始位置
iterator end2:迭代器2末尾位置
iterator beg3:目标容器的迭代器3初始位置
注意点:
merge()在使用前要分配内存空间resize()
两个容器中必须有有序的数据,存入另一个容器中也是有序的
#include <iostream> using namespace std; #include <vector> #include <algorithm> void print(int val) { cout<<val<<" "; } void test() { //创建两个容器 vector<int> v1; vector<int> v2; for(int i=0,j=1;i<5;i++,j=j+2) { v1.push_back(i); v2.push_back(j); } vector<int> v3; //先分配容量,再存入 v3.resize(v1.size()+v2.size()); //将v1,v2两个有序容器中数放入到v3中 merge(v1.begin(),v1.end(),v2.begin(),v2.end(),v3.begin()); //用for_each算法遍历 for_each(v3.begin(),v3.end(),print); } int main() { test(); return 0; }
——————————————————————————————————————
4.reverse() 函数使用
原型:reverse(iterator beg,iterator end)
iterator beg:迭代器初始位置
iterator end:迭代器末尾位置
#include <iostream> using namespace std; #include <vector> #include <algorithm> void print(int val) { cout<<val<<" "; } void test() { //创建容器 vector<int> v1; for(int i=0;i<5;i++) v1.push_back(i); cout<<"反转前:"<<endl; for_each(v1.begin(),v1.end(),print); cout<<endl; reverse(v1.begin(),v1.end()); //放入迭代器初始及最后的位置 cout<<"反转后:"<<endl; for_each(v1.begin(),v1.end(),print); } int main() { test(); return 0; }
运行结果: