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
原创粉丝点击