C++语法
文章平均质量分 50
little_miya
这个作者很懒,什么都没留下…
展开
-
C++中泛型算法详解6:根据结构速记所有标准库的泛型算法
本节与迭代器的类型密切相关。0. 约定beg和end表示元素范围的迭代器,几乎所有的算法都有一对由beg和end表示的序列进行操作。beg2表示第二个输入序列开始位置的迭代器。end2表示第二个序列的末尾位置。如果没有end2,算法假定beg2表示的序列与第一个序列表示的一样大。两个序列类型不必匹配,但是必须保证两个序列的元素都可以执行特定操作或者调用给定的可调用对象。unaryPred 和binaryPred表示一元和二元谓词,分别接受一个或者两个参数unaryOp和binaryOp是可调用原创 2021-02-13 18:09:01 · 146 阅读 · 0 评论 -
C++中泛型算法详解5:面向泛型算法的迭代器类别
前言任何算法最基本的特性是要求迭代器提供那些操作。根据算法要求的迭代器操作,可以分为如下迭代器类别:1. input iterator2. output iterator3. forward iterator4. bidirectional iterator5. random-access iterator常量时间内访问序列任意元素的能力。...原创 2021-02-13 12:03:04 · 120 阅读 · 0 评论 -
C++中的迭代器进阶2:iostream迭代器
通过流迭代器,我们可以用泛型算法,从流对象读取数据以及写入数据。我们可以为任意定义了输入运算符 >> 和 输出运算符 <<的class创建流迭代器。istream_iterator读取输入流要读取的类型必须定义了输入运算符不保证迭代器立即从流中读取;保证的是,第一次使用解引用迭代器之前,从流中读取数据的操作已经完成了举例: istream_iterator<int> in(cin), eof; cout << accumulate(原创 2021-02-13 10:23:28 · 1128 阅读 · 1 评论 -
C++中的迭代器进阶1:插入迭代器
插入迭代器:insert iterator头文件iterator可以用来向容器插入元素。一种迭代器适配器:关于适配器支持的操作见下表:插入迭代器的三种类型:back_inserter: 使用的是push_backfront_inserter: 使用的是push_frontinserter: 使用insert(但是和insert有点不同,具体见下文),接受第二个参数,这个参数必须是指向第一个参数表示的容器的迭代器。插入器的工作过程:最不好理解的是inserter,我们来详细看下原创 2021-02-12 17:15:14 · 972 阅读 · 0 评论 -
C++中泛型算法详解4:使用参数绑定(bind)实现的可调用对象
前言对于那种只在一两个地方使用的简单操作,使用lambda是最有用的。如果我们需要在很多地方使用相同的操作,通常应该定义一个函数,而不是编写多个相同的lambda表达式。参数绑定原创 2021-02-12 12:37:18 · 322 阅读 · 0 评论 -
C++中泛型算法详解3:使用谓词的算法
stable_sort稳定排序,最小程度打乱之前的排序顺序stable_sort(words,begin(), words.end(), [](const string &a, const string &b){return a.size() < b.size();});partition接受一个谓词,对容器内容划分,谓词true的值排在容器的前半部分,谓词为false的排在后半部分。算法返回迭代器,只想最后一个使得谓词为true的元素之后的位置。与sort相同,原创 2021-02-12 10:49:45 · 215 阅读 · 0 评论 -
C++中泛型算法详解2:lambda表达式
前言上一节关于泛型算法的介绍中,我们使用过sort排序算法,仅仅传入了vector的开头和结尾的两个迭代器。该算法还会接受第三个参数:谓词参数(predicate)谓词是一个可调用的表达式,返回一个能用做条件的值。所有的标准库使用的谓词分为两类:一元谓词(单一参数)二元谓词(两个参数)介绍lambda一个lambda表示一个可调用代码单元。我们可以把它理解为一个未命名的内敛函数。形式如下:[capture list] (parameter list) -> return type原创 2021-02-12 09:44:28 · 375 阅读 · 0 评论 -
C++中的可调用对象(callable object)
调用运算符 : 是一对括号(),里面为实参列表可调用对象: 对于一个对象或一个表达式,如果可以对其使用调用运算符(),则称之为可调用的。四种可调用对象:函数函数指针lambda表达式重载了函数调用运算符的类...原创 2021-02-11 18:47:45 · 656 阅读 · 0 评论 -
C++中泛型算法详解1:只读算法、读写算法、重排容器元素的算法
简介标准库提供了超过100个算法,这些算法有一致的结构。理解这些算法的基本方法是了解他们是否读取元素、改变元素或者重排元素顺序。泛型算法特点:算法不依赖容器所保存的元素类型。 只要有迭代器能够访问元素即可。大多数算法都会使用一个或多个元素上的操作,通常,我们可以使用自定义的操作来代替默认的运算符。算法本身永远不会执行容器上的操作,只是运行在迭代器上,执行迭代器的操作。只读算法find: 一对迭代器 + valuecount: 类似find...原创 2021-02-11 16:22:55 · 199 阅读 · 0 评论 -
C++中指针函数与函数指针
1. 指针函数定义:返回类型是指针的函数2. 函数指针定义:指向函数的指针3. 例子// 指针函数:返回类型是指针的函数int* addition(int a, int b){ int* sum = new int(a + b); return sum;}int substraction(int a, int b){ return a- b;}// 传入参数为函数指针int operation(int x, int y, int(*func)(int, in原创 2021-02-08 17:07:20 · 153 阅读 · 0 评论 -
C++中vector对象的容量增长方法
C++原创 2021-01-31 20:14:12 · 364 阅读 · 0 评论 -
C++中顺序容器的常用操作大合集
1. vector添加元素使用函数vec.push_back()#include <iostream>#include <vector>#include <string>int main(){ std::vector<std::string> vec; std::string str; while (std::cin >> str) vec.push_back(str); return 0;}注原创 2021-01-31 19:10:02 · 209 阅读 · 0 评论 -
C++中string的使用
一、构造方法子字符串操作:注意当从string拷贝字符的时候,提供可选的开始位置和计数值。不管我们要求计数值多大,标准库最多拷贝到string结尾举例 string s1(cp); string s2(noNull,2); // 正确 string s3(noNull); // 正确 //string s4(noNull, 1100); // 错误 string s5(cp + 6, 5); // string s6(s1,6); string原创 2021-01-31 10:28:40 · 150 阅读 · 0 评论 -
C++中的容器适配器:stack、queue、priority_queue
一、定义适配器adaptor是标准库的一个通用概念。容器、迭代器、函数都有适配器。适配器可以使得某种事物行为,看起来像另外一种事物一样。一个容器适配器,接受一种已有的容器类型,使表现看起来像是一种不同的类型。举例:stack<int> stk(deq); // 从deque拷贝元素到stack二、操作和类型通用操作包括:1. 栈stack适配器2. queue适配器注意:priority_queue保证优先级别最高的在queue的最前面。在默认情况下,使用<原创 2021-01-30 17:54:02 · 162 阅读 · 0 评论 -
C++中的迭代器概念与操作
迭代器支持的运算注意:这些运算只能string、vector、queue和array这几种容器forword_list迭代器不支持递减运算符没有iter1 + iter2这种运算原创 2021-01-30 16:23:28 · 157 阅读 · 0 评论 -
C++中类的this指针以及const成员函数
类的设计类的基本思想:数据抽象和封装。数据抽象依赖接口和实现分离的编程技术。类的设计者来思考类的实现过程。使用类的程序员只需要抽象的思考类型做了什么。设计一个类,就是一个创造的过程。过程中需要考虑如何使得类易于使用。一个优秀的类,既要有直观易于使用的接口,也必须具备高效的实现过程。关于thisthis是类额外的隐式参数。当我们调用类的成员函数,默认有一个该类对象的this参数传入成员函数的参数中。当我们在类的内部,可以直接调用函数对象的成员,因为this所指的就是这个对象。this是一个常原创 2021-01-30 11:12:36 · 404 阅读 · 0 评论 -
C++中指向常量的指针与常量指针
初始化: 创建变量的时候,赋予其一个初始值。花括号的列表初始化。使用列表初始化的时候如果存在丢失信息的风险,编译器将会报错。变量可以一次定义多次声明。使用extern关键字定义。reference引用为对象又另外起了个名字。一、 reference 和 pointer 的 区别区别引用&指针*定义引用并非对象,他只是为已经存在的object另外其一个名字指针本身就是对象,允许赋值和拷贝初始化引用必须被初始化,初始值必须是对象指针定义的时候无需初始化原创 2021-01-28 22:07:19 · 271 阅读 · 0 评论 -
C++中引用与指针的区别
reference 和 pointer 的 区别区别引用&指针*定义引用并非对象,他只是为已经存在的object另外其一个名字指针本身就是对象,允许赋值和拷贝初始化引用必须被初始化,初始值必须是对象指针定义的时候无需初始化生命周期引用一直绑定在初始化对象上生命周期中指针可以指向不同的对象复制和拷贝不可以可以...原创 2021-01-28 22:05:49 · 71 阅读 · 0 评论