转自:https://www.cnblogs.com/wkfvawl/p/9475939.html,https://www.cnblogs.com/linuxAndMcu/p/10264339.html1.二分查找#include <algorithm>//查找某个元素是否出现,返回布尔类型,找到value返回1,否则返回0,并不会返回下标 binary_search(arr[],arr[]+size ,value)//在数组中 binary_search(a.begin(),a.end(),value)//在向量中//查找第一个大于等于某个值的迭代器,返回对应容器类型的iterator lower_bound(arr[],arr[]+s...
C与CPP不同以及命名空间简介命名空间在软件设计中的作用就是为了实现迭代式开发。命名空间的别名#include <iostream>namespace runrunrunrun {int a(10);char *str("gogogo");namespace run //命名空间的嵌套{int a(9);} } namespace runrunrunrun //命名空间的拓展 {int y(5);//int a(15);重定义错误 } namespace r = runrunrunrun;//给命名空间起一个别名void main132() {std::cout << r::run::a << std::endl;//命名空间可...
第1条 vector 的使用 第2条:字符串格式化的“动物庄园”之一:sprintf 第3条:字符串格式化的“动物庄园”之二:标准的(或极度优雅的)替代方案 第4条:标准库成员函数 第5条:泛型编程的风味之一:基础 第6条: 第7条: 第8条: 第9条: 第10条: 第11条: <style></style>
第二章:C++泛型机制的基石——数据类型表 2.1 类模板的公有数据类型成员 2.1.1 类的数据类型成员 ??C++类中不仅可以定义数据成员和函数成员,而且还可以定义数据类型成员。在泛型设计中,类的数据类型成员是一个常用的感念。所谓类的数据类型成员,就是在一个类中使用typedef定义一个已知数据类型的别名。例如: typedef long double LDBL ??在C++中,这种在类模板中定义的数据类型也称nested type(嵌入式类型)。既然nested ty...
前几天,博主看了一篇文章抨击C++的泛型会导致生成的可执行文件代码臃肿。博主从事C++软件开发多年,由于之前的开发环境都是资源充足的服务器,不用考虑磁盘空间的问题。最近打算在智能家居主机的嵌入式平台上使用C++进行开发。FLASH存储空间有限,这是必须要考虑的因素,一定要重视。如下定义两个list,元素类型不同:list<int> l1; list<string> l2;如果是用C语来做应该怎么办?它会对应list<int>写一套代码,再对list<string>写...
一、copy 功能描述: 容器内指定范围的元素拷贝到另一容器中 函数原型:copy(iterator beg, iterator end, iterator dest); // 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置 // beg 开始迭代器 // end 结束迭代器 // dest 目标起始迭代器 示例: #include <algorithm> #include <vector>class myPrint { public:void operator()(int val){cout << val << " ";} };void test01() {vector<int> v1;for (int i =...
一、意义① 意义①:typename可以在template中声明类型参数在template中声明类型参数时,typename和class是等价的,两者都可以例如: //两者是等价的template<class T> class Widget;template<typename T> class Widget; 二、意义② 意义②:可以用来声明某种类型演示说明 现在我们有一个模板,其接受一个STL容器类型,然后打印容器中的第二个元素的值,但是这个模板可能会产生错误。代码如下: template<typename C>void print2nd...
《C++设计新思维-泛型编程与设计之应用》 链接: https://pan.baidu.com/s/1_filEqOMM0laa8HykZ7rqw 提取码: a73elabuladong的算法小抄 获取链接:https://pan.baidu.com/s/1qpL4t6jmZnZgRvGlt8SSxg 提取码:KfGM
名称定义输入迭代器只读,不写;单遍扫描,只能递增输出迭代器只写,不读;单遍扫描,只能递增前向迭代器可读写,多遍扫描,只能递增双向迭代器可读写,多遍扫描,可递增递减随机访问迭代器可读写,多遍扫描,支持全部迭代器运算1. 输入迭代器(input iterator) 支持的操作集:==, !=, 前缀++, 后缀++, *, ->。 eg1. istream_iterator是一种输入迭代器 eg2. find, accumulate算法要求输入迭代器 find(line.crbegin(), line.crend(),...
前言 上一节关于泛型算法的介绍中,我们使用过sort排序算法,仅仅传入了vector的开头和结尾的两个迭代器。该算法还会接受第三个参数:谓词参数(predicate) 谓词是一个可调用的表达式,返回一个能用做条件的值。 所有的标准库使用的谓词分为两类: 一元谓词(单一参数)二元谓词(两个参数) 介绍lambda 一个lambda表示一个可调用代码单元。我们可以把它理解为一个未命名的内敛函数。 形式如下: [capture list] (parameter list) -...
简介 标准库提供了超过100个算法,这些算法有一致的结构。 理解这些算法的基本方法是了解他们是否读取元素、改变元素或者重排元素顺序。 泛型算法特点: 算法不依赖容器所保存的元素类型。 只要有迭代器能够访问元素即可。大多数算法都会使用一个或多个元素上的操作,通常,我们可以使用自定义的操作来代替默认的运算符。算法本身永远不会执行容器上的操作,只是运行在迭代器上,执行迭代器的操作。 1. 只读算法 // findvector<int...
1. 模板介绍 1.1 模板的概念函数编写时进一步抽象化(编写函数代码原型时不给定具体类型),调用时再给定具体类型,由编译器在编译时再绑定形成代码(编译时根据调用时的实参具体类型推导匹配的原型中模板的本次具体类型),这就是模板。1 #include <iostream>2 3 using namespace std;4 5 template <typename T>6 void my_swap(T &x, T &y)7 {8 T temp = 0;9 10 temp = x; 11 x = y; 12 y = temp; 13 } 14 15...
泛型编程最早提出的目的是为了减轻代码量,避免无意义的重载而提出的; 在检查的时候并不针对于泛型进行检查,只有在编译的时候才会针对于template的类型来进行实例化; 泛型函数模板: 补充:关于内联函数的问题 内联函数类似于c中的宏展开,本质上就是为了减少调用栈的开销而提出的,采用inline方式来构造; 泛型函数也可以使用内联函数,对于最简单的例子如下:#include<stdio.h> #include<iostream> #include<vector> #inc...
一、模板函数 1、模板:模板是泛型编程的重要思想,也是C++的精髓之一,C++的STL库完全通过模板实现(关于STL有兴趣的可以去研究一下这个开源项目:[https://github.com/Alinshans/MyTinySTL]),对比函数重载,函数模板只需要通过一次函数定义就可以实现不同参数列表和参数类型的函数重载功能,下面是个简单的模板函数。 #include <iostream> #include <typeinfo>using namespace std;template<typename T, typename Y> void tfun...
各位学友,老师的新课程《C++模板与泛型编程》正式推出了,这门课程算得上是国内第一门正儿八经讲现代模板与泛型编程的课程了,绝对的良心之作,欢迎大家学习。https://edu.51cto.com/course/24885.html同时,老师的《C++新经典》与《C++新经典:对象模型》两本非常优质(超出你想象的质量)的书籍也由清华大学出版社出版了,目前正在举行购买课程送书籍活动,具体可以参考如下课程的介绍:https://edu.51cto.com/course/15271.htm...