【C++ Primer | 07】泛型算法

定制操作

 1 #include <iostream>
 2 #include <string>
 3 #include <vector>
 4 #include <algorithm>
 5 #include <numeric>
 6 #include <list>
 7 using namespace std;
 8
 9 template <typename Sequence>
10 inline ostream& println(Sequence const& seq)
11 {
12     for (auto const& elem : seq)
13         cout << elem << " ";
14     cout << endl;
15     return cout;
16 }
17
18 inline bool is_shorter(std::string const& lhs, std::string const& rhs)
19 {
20     return  lhs.size() < rhs.size();
21 }
22
23 void elimdups(vector<string> &vs)
24 {
25     sort(vs.begin(), vs.end());
26     auto new_end = unique(vs.begin(), vs.end());
27     vs.erase(new_end, vs.end());
28 }
29
30 int main()
31 {
32     vector<string> v{ "1234", "1234", "1234", "Hi", "alan", "wang" };
33     elimdups(v);
34     stable_sort(v.begin(), v.end(), is_shorter);
35     cout << "ex10.11 :\n";
36     println(v);
37     system("pause");
38     return 0;
39 }

输出结果:

Exercise 10.14:

1 int main()
2 {
3     auto sum = [](int a, int b) {return a + b; };
4     cout << sum(1, 5) << endl;
5     return 0;
6 }

Exercise 10.16

原文地址:https://www.cnblogs.com/sunbines/p/10609861.html

时间: 2024-10-18 22:58:51

【C++ Primer | 07】泛型算法的相关文章

c++ primer 11 泛型算法

使用泛型算法必须包含头文件#inlucde <algorithm> 标准库还定义一组泛化的算术算法,其命名习惯与泛型算法相同,包含头文件#include <numeric> find vector<int>::const_iterator result =  find(vec.begin(), vec.end(), search_value) 找到就返回指向该元素的迭代器,没找到就返回第二个迭代器实参 1 vector<string> vec = {&quo

C++ Primer笔记6_STL之泛型算法

1.泛型算法: 大多数算法定义在头文件algorithm中,标准库还在头文件numeric中定义了一组数值泛型算法 只读算法: 举例: find函数用于找出容器中一个特定的值,有三个参数 int val = 10;//val为我们需要查找的值 auto result = find(vec.begin(), vec.end(), val): cout << "The value "<< val << (result == vec.end() ? &qu

【足迹C++primer】31、初识泛型算法

初识泛型算法 理解算法的最基本方法是了解他们是否读取元素.改变元素或是重排元素顺序! 只读算法 #include<iostream> #include<numeric> using namespace std; //对vec中的元素求和,初值是0 int sum=accumulate(vec.cbegin(), vec.cend(), 0); 这里面第三个参数决定了函数使用哪个加法运算符以及返回值类型. 算法和元素类型 string sum=accumulate(v.cbegin(

第十一章 泛型算法 C++ PRIMER

vector<int>::const_iterator result = find(vector.begin(). vector.end(),search_value); 如果查找失败,分会end()  如果有两个,会返回哪一个的迭代器? int *reauslt = find(ia,ia+6,search_value); 也可以同样处理字符串 算法要以<algorithm><numeric>,依赖于迭代器和迭代器的算法实现,算法可能改变值,可能移动元素,单从不直接添加

【足迹C++primer】30、概述(泛型算法)

概述(泛型算法) 大多数算法都定义在头文件algorithm中.标准库还在头文件numeric中定义了一组泛型算法. #include<iostream> #include<numeric> #include<vector> #include<algorithm> using namespace std; int main() { vector<int> vec; for(size_t t=0 ; t != 44 ; ++t) { vec.pus

C++ Primer 学习笔记_45_STL实践与分析(19)--泛型算法的结构

STL实践与分析 --泛型算法的结构 引言: 正如全部的容器都建立在一致的设计模式上一样,算法也具有共同的设计基础. 算法最主要的性质是须要使用的迭代器种类.全部算法都指定了它的每一个迭代器形參可使用的迭代器类型.比方,假设形參必须为随机訪问迭代器则可提供vector或 deque类型的迭代器,或者提供指向数组的指针.而其它容器的迭代器不能用在这类算法上. C++还提供了另外两种算法模式:一种模式由算法所带的形參定义;还有一种模式则通过两种函数命名和重载的规范定义. 一.算法的形參模式 大多数的

C++ Primer 读书笔记:第11章 泛型算法

第11章 泛型算法 1.概述 泛型算法依赖于迭代器,而不是依赖容器,需要指定作用的区间,即[开始,结束),表示的区间,如上所示 此外还需要元素是可比的,如果元素本身是不可比的,那么可以自己定义比较函数. 2.常用的泛型算法函数: fill,fill_n, copy, replace, sort, unique, count_if, stable_sort 此外在有一个谓词函数会结合以上的函数使用,像sort, count_if等 3.再谈迭代器 (1)插入迭代器 back_inserter, f

C++primer第十一章 泛型算法

标准库容器定义的操作非常少.标准库没有给容器添加大量的功能函数,而是选择提供一组算法,这些算法大都不依赖特定的容器类型,是“泛型”的,可作用在不同类型的容器和不同类型的元素上. 因为它们实现共同的操作,所以称之为“算法”:而“泛型”指的是它们可以操作在多种容器类型上——不但可作用于 vector 或 list 这些标准库类型,还可用在内置数组类型.甚至其他类型的序列上. 11.1. 概述 假设有一个 int 的 vector 对象,名为 vec,我们想知道其中包含某个特定值.解决这个问题最简单的

【足迹C++primer】30、概要(泛型算法)

概要(泛型算法) 大多数算法的头文件中定义algorithm在. 标准库也是第一个文件numeric它定义了一套通用算法. #include<iostream> #include<numeric> #include<vector> #include<algorithm> using namespace std; int main() { vector<int> vec; for(size_t t=0 ; t != 44 ; ++t) { vec.

C++primer拾遗(第十章:泛型算法)

泛型算法,重要而且常用.虽然只是看了一遍书,但是感觉需要研究的地方还很多. 总结不易,转载注明出处,谢谢. http://www.cnblogs.com/linhaowei0389/