C++ 常用泛型算法的使用
来源:互联网 发布:minecraft java版 编辑:程序博客网 时间:2024/04/30 23:19
#include <algorithm>#include <numeric>#include <iterator>#include <vector>#include <iostream>#include <functional>using namespace std;//template<typename T>void printing(const vector<int> &vec){ for (auto ite : vec){ cout << ite << ends; } cout << endl;}void callbc(int a,int b){ cout << a + b << ends;}void generic_algorithm_test(){ int ia[] = { 5, 7, 4, 2, 3, 9, 8, 1 }; int val = 100; int *result=find(begin(ia), end(ia), val); //find返回指向val的指针或迭代器 cout << result << endl; int sum = 0; sum = accumulate(begin(ia), end(ia), 0); //求和,初值为0 cout << sum << endl; //int ib[] = { 5, 7, 4, 2 }; //bool equal(begin(ia),end(ia), begin(ib)); fill(begin(ia), end(ia), 11); //写容器算法, for (auto i : ia){ cout << i << ends; } cout << endl; vector<int> vec(10); fill_n(vec.begin(), 4, 13); printing(vec); //插入迭代器 auto ite = back_inserter(vec); *ite = 35; printing(vec); //插入迭代器是一种向容器中添加元素的迭代器,确保有足够的空间来容纳输出数据的方法。 fill_n(back_inserter(vec), 7, 37); printing(vec); //拷贝算法 //可以使用copy()实现内置数组的拷贝 vector<int> vec3; //vec3.resize(vec.size()); //copy(vec.begin(),vec.end(), vec3.begin()); //copy(begin(ia), end(ia), vec3.begin()); copy(begin(ia),end(ia), back_inserter(vec3)); printing(vec3); sort(vec3.begin(), vec3.end()); //排序算法 auto end_unique=unique(vec3.begin(), vec3.end()); vec3.erase(end_unique, vec3.end()); printing(vec3); for (int i = 10; i > 0; i--){ vec3.push_back(i); } sort(vec3.begin(), vec3.end()); printing(vec3); sort(vec3.begin(), vec3.end(), [](int &a, int &b){return a > b; }); //定制操作,向算法传递函数。 printing(vec3); cout << "for_each() test" << endl; for_each(vec3.begin(), vec3.end(), [](int &i){cout << i << ends; }); //使用lambda表达式 cout << endl; for_each(vec3.begin(), vec3.end(), bind(callbc, std::placeholders::_1, 3)); //使用bind函数}
0 0
- C++ 常用泛型算法的使用
- C的常用算法
- C的常用算法
- C程序设计的常用算法
- C程序设计的常用算法
- C程序设计的常用算法
- C程序设计的常用算法
- C程序设计的常用算法
- C程序设计的常用算法
- C程序设计的常用算法
- C程序设计的常用算法
- C 程序的常用算法
- C 程序的常用算法
- C程序设计的常用算法
- [C/C++] 常用算法
- C程序设计的常用算法 [精华]
- C 语言常用的排序算法
- C程序设计的常用算法汇编
- oracle 9i/10g/11g(11.2.0.3)安装包和PATCH下载地址汇总
- TraceView的使用方法
- 统计分析基础 (一) 数据统计与图表
- u-boot-2016.5启动流程
- AppleScirpt设置打开Terminal快捷键
- C++ 常用泛型算法的使用
- 多图详解Spring框架的设计理念与设计模式
- JMM和synchronize的一些记录:
- JVM内存区域介绍
- 软件测试的一些理解
- Android基础(三)
- Leetcode 234. Palindrome Linked List (Easy) (cpp)
- Integer to English Words
- 关于解决git冲突