STL算法示例
来源:互联网 发布:淘宝首页导航栏尺寸 编辑:程序博客网 时间:2024/06/03 13:40
1.移除性算法remove
首先查找给定值第一个位置,然后遍历后面的元素,将非移除元素拷贝到前面,覆盖前面的元素。
#include <iostream>#include <algorithm>#include <vector>#include <list>using namespace std;void print_element(int n) {cout << n << " ";}int main(void) {int a[] = { 1, 3, 2, 3, 4, 5 };vector<int> v(a, a+6);list<int> l(15);for_each(v.begin(), v.end(), print_element);cout << endl;/*remove(v.begin(), v.end(), 3);for_each(v.begin(), v.end(), print_element);cout << endl;*/v.erase(remove(v.begin(), v.end(), 3), v.end());for_each(v.begin(), v.end(), print_element);cout << endl;return 0;}
执行结果:
2.变序rotate
#include <iostream>#include <algorithm>#include <vector>#include <list>using namespace std;void print_element(int n) {cout << n << " ";}int main(void) {int a[] = { 1, 3, 2, 3, 4, 5 };vector<int> v(a, a+6);list<int> l(15);for_each(v.begin(), v.end(), print_element);cout << endl;rotate(v.begin(), v.begin()+2, v.end()-1);for_each(v.begin(), v.end(), print_element);cout << endl;return 0;}/* * list<int> l * l.end()-1 * 链表不支持随机访问+,-,+=,-=:error * ++,--:ok*/执行结果:
3.排序算法sort
4.已序区间算法
lower_bound:(应用于有序区间)搜索第一个“大于等于给定值”的元素,如果要插入给定值保持区间有序性,返回第一个可插入位置
upped_bound:(应用于有序区间)搜索第一个“大于给定值”的元素,如果要插入给定值,保持区间有序性,返回最后一个可插入的位置
#include <iostream>#include <algorithm>#include <vector>#include <list>using namespace std;void print_element(int n) {cout << n << " ";}int main(void) {int a[] = { 1, 10, 10, 14, 15, 16 };vector<int> v(a, a+6);list<int> l(15);for_each(v.begin(), v.end(), print_element);cout << endl;auto it = lower_bound(v.begin(), v.end(), 10);if(v.end() != it) {cout << it - v.begin() << endl; }it = upper_bound(v.begin(), v.end(), 10);if(v.end() != it) {cout << it - v.begin() << endl; }v.insert(it,55);for_each(v.begin(), v.end(), print_element);cout << endl;return 0;}
执行结果:
5.数值算法accumulate
#include <iostream>#include <algorithm>#include <vector>#include <list>#include <numeric>using namespace std;void print_element(int n) {cout << n << " ";}int mult(int a,int b) {return a*b;}int main(void) {int a[] = { 1, 2, 3, 4, 5, 6 };vector<int> v(a, a+6);for_each(v.begin(), v.end(), print_element);cout << endl;//累加cout << accumulate(v.begin(), v.end(), 0) <<endl;//累乘cout << accumulate(v.begin(), v.end(), 1, mult) << endl;return 0;}
阅读全文
1 0
- STL算法示例
- STL算法库函数代码示例
- STL-泛型算法示例
- STL算法总结之查找算法示例
- STL示例05(泛型算法)
- STL学习与示例
- STL Map使用示例
- STL示例03(流迭代器)
- 【STL】for_each示例
- 【STL】find示例
- 【STL】ptrdiff_t示例
- 【STL】bitset示例
- STL,bitset示例
- C++ STL示例
- 【STL】bitset示例
- 【STL】for_each示例
- STL-综合示例
- 【STL】for_each使用示例
- 《Android开发艺术探索——Android的消息机制》
- (c#) 关于本地网络的IP地址的一些事
- 【云栖TechDay有问必答】NLP技术的应用及思考
- 2.空间数据
- tcpdump使用
- STL算法示例
- Linux基本命令
- 纯文本还是HTML邮件
- Jquery学习总结
- linux crontab -e报错 || 不执行 || expected unqualified-id before
- 关于select的清空,获取选中值
- Python import(导入)
- dataTables获取选中行数据
- 《scope源码解析1——scope是个什么鬼》