容器元素合并,并存储到另一容器中
注意:两容器要有序,并且顺序一致
merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest)
- merge算法 容器元素合并,并存储到另一容器中
- @param beg1 容器1开始迭代器
- @param end1 容器1结束迭代器
- @param beg2 容器2开始迭代器
- @param end2 容器2结束迭代器
- @param 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> vTar; vTar.resize(v1.size() + v2.size()); //需要给目标容器定义size merge(v1.begin(), v1.end(), v2.begin(), v2.end(), vTar.begin()); for_each(vTar.begin(), vTar.end(), [](int v) { cout << v << " "; }); }
结果:
排序
sort(iterator beg, iterator end, _callback)
- sort算法 容器元素排序
- 注意:两个容器必须是有序的
- @param beg 容器1开始迭代器
- @param end 容器1结束迭代器
- @param _callback 回调函数或者谓词(返回bool类型的函数对象)
void test02() { vector<int>v; v.push_back(10); v.push_back(60); v.push_back(40); v.push_back(90); v.push_back(20); //1.默认排序 sort(v.begin(), v.end()); for_each(v.begin(), v.end(), [](int v) { cout << v << " "; }); cout << endl; //2.自定义规则 sort(v.begin(), v.end(), greater<int>()); for_each(v.begin(), v.end(), [](int v) { cout << v << " "; }); }
结果:
洗牌 自己提供随机种子
random_shuffle(iterator beg, iterator end)
- sort算法 对指定范围内的元素随机调整次序
- @param beg 容器开始迭代器
- @param end 容器结束迭代器
void test03() { 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(), [](int v) { cout << v << " "; }); } int main() { //test01(); //test02(); srand((unsigned int)time(NULL)); //随机种子 使用随机数如果没有随机种子 那么运行几遍随机数都是一样的 //srand() 要使用random头 //time() 要使用ctime头 test03(); system("Pause"); return 0; }
反转
reverse(iterator beg, iterator end)
- reverse算法 反转指定范围的元素
- @param beg 容器开始迭代器
- @param end 容器结束迭代器
void test04() { vector<int>v; for (int i = 0; i < 10; i++) { v.push_back(i); } reverse(v.begin(), v.end()); //反转 for_each(v.begin(), v.end(), [](int v) { cout << v << " "; }); }