sort //对容器内元素进行排序
random_shuffle //洗牌,指定范围内的元素随机调整次序
merge //容器元素合并,并存储在另一容器中
reverse //反转指定范围的元素
(1)sort
对容器内元素进行排序
函数原型:sort(iterator beg,iterator end,_Pred); //按值查找元素,找到返回指定
示例:
void printVector(vector<int>&v){
for(vector<int>::iterator it = v.begin();it!=v.end();it++){
cout<<*it<<" ";
}
cout<<endl;
}
void myPrint(int val){
cout<<val<<" ";
}
void test01(){
vector<int>v;
v.push_back(10);
v.push_back(3);
v.push_back(34);
v.push_back(12);
v.push_back(23);
cout<<"排序前 :" ;
printVector(v);
//采用sort排序,默认从小到大排序
sort(v.begin(),v.end());
cout<<"排序后 :";
//printVector(v);
for_each(v.begin(),v.end(),myPrint) ;
//重新指定排序规则
sort(v.begin(),v.end(),greater<int>());
cout<<endl;
for_each(v.begin(),v.end(),myPrint);
cout<<endl;
}
(2)random_shuffle
洗牌算法,对指定范围内的元素随机调整次序
函数原型:
random_shuffle(iterator beg,iterator end); //指定范围内的元素随机调整次序
示例:
#include<iostream>
using namespace std;
#include<vector>
#include<algorithm>
#include<ctime>
void myPrint(int val){
cout<<val<<" ";
}
void test01(){
//做一个随机数种子
srand((unsigned int)time(NULL));
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(),myPrint);
cout<<endl;
}
(3)merge
两个容器元素(必须有序)合并,并存储到另一个容器中,
函数原型:
merge(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest); //容器元素合并,并存储到另一个容器中
示例:
void test01(){
vector<int>v1;
vector<int>v2;
for(int i=0;i<10;i++){
v1.push_back(i);
v2.push_back(i+1);
}
//目标容器
vector<int>vTarget;
//提前给目标容器预留空间
vTarget.resize(v1.size()+v2.size());
//合并
merge(v1.begin(),v1.end(),v2.begin(),v2.end(),vTarget.begin());
for_each(vTarget.begin(),vTarget.end(),myPrint);
cout<<endl;
}
(4)reverse
将容器内元素进行反转
函数原型:
reverse(iterator beg,iterator end); //反转指定范围的元素
示例:
void test01(){
vector<int>v;
v.push_back(30);
v.push_back(10);
v.push_back(50);
v.push_back(20);
v.push_back(40);
cout<<"反转前: "<<endl;
for_each(v.begin(),v.end(),myPrint);
cout<<endl;
cout<<"反转后: "<<endl;
reverse(v.begin(),v.end()); //反转
for_each(v.begin(),v.end(),myPrint);
cout<<endl;
}