常用算法2
- sort
- random_shuffle
- merge
- reverse
1、 sort
对容器内元素进行排序
2、 random_shuffle
洗牌,指定范围内的元素随机调整次序
3、 merge
容器元素合并,并存储到另一个容器中
4、 reverse
反转指定范围的元素
sort
对容器内元素进行排序
sort(iterator beg,iterator end,_Pred);
按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置,beg开始迭代器,end结束迭代器,_Pred谓词
cpp
void p3(int val) {
cout << val << " ";
}
void test() {
....
//升序
sort(v.begin(), v.end());
for_each(v.begin(), v.end(), p3);
cout << endl;
cout << "------------------------" << endl;
//降序
sort(v.begin(), v.end(), greater<int>());
for_each(v.begin(), v.end(), p3);
}
random_shuffle
random_shuffle(iterator beg,iterator end);
指定范围内的元素随机调整次序,beg开始迭代器,end结束迭代器
cpp
#include<functional>
#include<ctime>
void p3(int val) {
cout << val << " ";
}
void test() {
srand((unsigned int)time(NULL));//让每次顺序不一样
vector<int> v;
v.push_back(10);
v.push_back(15);
v.push_back(20);
v.push_back(34);
v.push_back(35);
//洗牌,打乱顺序
random_shuffle(v.begin(), v.end());
for_each(v.begin(), v.end(), p3);
}
merge
两个容器元素合并,并存储到另一个容器中
merge(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest);
两个容器元素合并,并存储到另一个容器中,两个容器必须是有序的,beg1容器1开始迭代器,end1容器1结束迭代器,beg2容器2开始迭代器,end2容器2结束迭代器,dest目标容器开始迭代器
cpp
void test() {
vector<int> v;
v.push_back(10);
v.push_back(15);
v.push_back(20);
v.push_back(34);
v.push_back(35);
vector<int> v1;
v1.push_back(15);
v1.push_back(89);
v1.push_back(99);
v1.push_back(100);
v1.push_back(111);
vector<int> v3;
v3.resize(v1.size()+v.size());
merge(v.begin(), v.end(), v1.begin(), v1.end(), v3.begin());
for_each(v3.begin(), v3.end(), p3);
}
reverse
将容器内元素进行反转
reverse(iterator beg,iterator end);
反转指定范围的元素,beg开始迭代器,end结束迭代器
cpp
void test() {
....
for_each(v.begin(), v.end(), p3);
cout << endl;
cout << "------------------------" << endl;
reverse(v.begin(), v.end());
for_each(v.begin(), v.end(), p3);
}