C++
Will Jay
这个作者很懒,什么都没留下…
展开
-
计算机网络(33)—— TCP协议特点和TCP报文段格式
TCP协议特点和TCP报文段格式1.TCP是面向连接(虚连接)的传输层协议。2.每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。3.TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。(可靠有序,不丢不重)4.TCP提供全双工通信发送缓存 准备发送的数据&已发送但尚未收到确认的数据、接收缓存 按序到达但尚未被接收应用程序读取的数据&不按序到达的数据TCP首部格式格式字段详解源端口、目标端口:计算机上的进程要和其他进程通信是要通过计原创 2020-05-28 14:33:31 · 385 阅读 · 0 评论 -
C++提高编程(4.6)—— 常用集合算法
5.6 常用集合算法学习目标:掌握常用的集合算法算法简介:set_intersection // 求两个容器的交集set_union // 求两个容器的并集set_difference // 求两个容器的差集5.6.1 set_intersection功能描述:求两个容器的交集函数原型:set_intersection(iterator beg1, iterator原创 2020-05-28 00:20:52 · 145 阅读 · 0 评论 -
C++提高编程(4.5)—— 常用算术生成算法
5.5 常用算术生成算法学习目标:掌握常用的算术生成算法注意:算术生成算法属于小型算法,使用时包含的头文件为 #include <numeric>算法简介:accumulate // 计算容器元素累计总和fill // 向容器中添加元素5.5.1 accumulate功能描述:计算区间内 容器元素累计总和函数原型:accumulate(iterator beg, iterator end, valu原创 2020-05-28 00:20:04 · 135 阅读 · 0 评论 -
C++提高编程(4.4)—— 常用拷贝和替换算法
5.4 常用拷贝和替换算法学习目标:掌握常用的拷贝和替换算法算法简介:copy // 容器内指定范围的元素拷贝到另一容器中replace // 将容器内指定范围的旧元素修改为新元素replace_if // 容器内指定范围满足条件的元素替换为新元素swap // 互换两个容器的元素5.4.1 copy功能描述:容器内指定范围的元素拷贝到另一容器中原创 2020-05-28 00:19:23 · 198 阅读 · 1 评论 -
C++提高编程(4.3)—— 常用排序算法
5.3 常用排序算法学习目标:掌握常用的排序算法算法简介:sort //对容器内元素进行排序random_shuffle //洗牌 指定范围内的元素随机调整次序merge // 容器元素合并,并存储到另一容器中reverse // 反转指定范围的元素5.3.1 sort功能描述:对容器内元素进行排序函数原型:sort(iterator beg, iterator end, _Pred);// 按值查找元原创 2020-05-28 00:18:35 · 239 阅读 · 0 评论 -
C++提高编程(4.2)—— 常用查找算法
5.2 常用查找算法学习目标:掌握常用的查找算法算法简介:find //查找元素find_if //按条件查找元素adjacent_find //查找相邻重复元素binary_search //二分查找法count //统计元素个数count_if //按条件统计元素个数5.2.1 find功能描述:查找指定元素,找到返回指定元素的迭代原创 2020-05-28 00:17:50 · 115 阅读 · 0 评论 -
C++提高编程(4.1)—— 常用遍历算法
5.1 常用遍历算法学习目标:掌握常用的遍历算法算法简介:for_each //遍历容器transform //搬运容器到另一个容器中5.1.1 for_each功能描述:实现遍历容器函数原型:for_each(iterator beg, iterator end, _func);// 遍历算法 遍历容器元素// beg 开始迭代器// end 结束迭代器// _func 函数或者函数对象示例:#include <algorithm>原创 2020-05-28 00:16:42 · 345 阅读 · 0 评论 -
C++提高编程(4)—— STL- 常用算法
5 STL- 常用算法概述:算法主要是由头文件<algorithm> <functional> <numeric>组成。<algorithm>是所有STL头文件中最大的一个,范围涉及到比较、 交换、查找、遍历操作、复制、修改等等<numeric>体积很小,只包括几个在序列上面进行简单数学运算的模板函数<functional>定义了一些模板类,用以声明函数对象。详细内容会在后面的博客中讲述本篇笔记是在观原创 2020-05-28 00:15:48 · 143 阅读 · 0 评论 -
C++提高编程(3)—— STL- 函数对象
4 STL- 函数对象4.1 函数对象4.1.1 函数对象概念概念:重载函数调用操作符的类,其对象常称为函数对象函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数4.1.2 函数对象使用特点:函数对象在使用时,可以像普通函数那样调用, 可以有参数,可以有返回值函数对象超出普通函数的概念,函数对象可以有自己的状态函数对象可以作为参数传递示例:#include <string>//1、函数对象在使用时,可以像原创 2020-05-28 00:13:59 · 108 阅读 · 0 评论 -
C++提高编程(2.8)—— map/ multimap容器
3.9 map/ multimap容器3.9.1 map基本概念简介:map中所有元素都是pairpair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)所有元素都会根据元素的键值自动排序本质:map/multimap属于关联式容器,底层结构是用二叉树实现。优点:可以根据key值快速找到value值map和multimap区别:map不允许容器中有重复key值元素multimap允许容器中有重复key值元素3.9.2 map构造和赋值功原创 2020-05-28 00:12:57 · 148 阅读 · 0 评论 -
C++提高编程(2.7)—— set/ multiset 容器
3.8 set/ multiset 容器3.8.1 set基本概念简介:所有元素都会在插入时自动被排序本质:set/multiset属于关联式容器,底层结构是用二叉树实现。set和multiset区别:set不允许容器中有重复的元素multiset允许容器中有重复的元素3.8.2 set构造和赋值功能描述:创建set容器以及赋值构造:set<T> st; //默认构造函数:set(const set &原创 2020-05-28 00:11:23 · 139 阅读 · 0 评论 -
C++提高编程(2.6)—— list容器
3.7 list容器3.7.1 list基本概念**功能:**将数据进行链式存储链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表的组成:链表由一系列结点组成结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域STL中的链表是一个双向循环链表由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于双向迭代器list的优点:采用动态存储分配,不会造成内存浪费和溢出链表执行插入和删原创 2020-05-28 00:09:08 · 106 阅读 · 0 评论 -
C++提高编程(2.5)—— queue 容器
3.6 queue 容器3.6.1 queue 基本概念概念:Queue是一种先进先出(First In First Out,FIFO)的数据结构,它有两个出口队列容器允许从一端新增元素,从另一端移除元素队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为队列中进数据称为 — 入队 push队列中出数据称为 — 出队 pop生活中的队列:3.6.2 queue 常用接口功能描述:栈容器常用的对外接口构造函数:queue<T> que;原创 2020-05-28 00:07:12 · 140 阅读 · 0 评论 -
C++提高编程(2.4)—— stack容器
3.5 stack容器3.5.1 stack 基本概念概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为栈中进入数据称为 — 入栈 push栈中弹出数据称为 — 出栈 pop生活中的栈:3.5.2 stack 常用接口功能描述:栈容器常用的对外接口构造函数:stack<T> stk; /原创 2020-05-28 00:05:11 · 97 阅读 · 0 评论 -
C++提高编程(2.3)—— deque容器
3.3 deque容器3.3.1 deque容器基本概念功能:双端数组,可以对头端进行插入删除操作deque与vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度回比vector快vector访问元素时的速度会比deque快,这和两者内部实现有关deque内部工作原理:deque内部有个中控器,维护每段缓冲区中的内容,缓冲区中存放真实数据中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间原创 2020-05-28 00:03:29 · 125 阅读 · 0 评论 -
C++提高编程(2.2)—— vector容器
3.2 vector容器3.2.1 vector基本概念功能:vector数据结构和数组非常相似,也称为单端数组vector与普通数组区别:不同之处在于数组是静态空间,而vector可以动态扩展动态扩展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间vector容器的迭代器是支持随机访问的迭代器3.2.2 vector构造函数功能描述:创建vector容器函数原型:vector<T> v;原创 2020-05-28 00:01:08 · 445 阅读 · 0 评论 -
C++提高编程(2.1)—— string容器
3.1 string容器3.1.1 string基本概念本质:string是C++风格的字符串,而string本质上是一个类string和char * 区别:char * 是一个指针string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。特点:string 类内部封装了很多成员方法例如:查找find,拷贝copy,删除delete 替换replace,插入insertstring管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行原创 2020-05-27 23:59:13 · 478 阅读 · 0 评论 -
C++提高编程(2)—— STL初识
2 STL初识2.1 STL的诞生长久以来,软件界一直希望建立一种可重复利用的东西C++的面向对象和泛型编程思想,目的就是复用性的提升大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量重复工作为了建立数据结构和算法的一套标准,诞生了STL2.2 STL基本概念STL(Standard Template Library,标准模板库)STL 从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator)容器和算法之间通过迭原创 2020-05-27 23:57:24 · 121 阅读 · 0 评论 -
C++提高编程(1.2)——模板进阶
1.3 类模板1.3.1 类模板语法类模板作用:建立一个通用类,类中的成员 数据类型可以不具体制定,用一个虚拟的类型来代表。语法:template<typename T>类解释:template — 声明创建模板typename — 表面其后面的符号是一种数据类型,可以用class代替T — 通用的数据类型,名称可以替换,通常为大写字母示例:#include <string>//类模板template<class NameTyp原创 2020-05-27 23:55:34 · 148 阅读 · 0 评论 -
C++提高编程(1)——模板
1 模板1.1 模板的概念模板就是建立通用的模具,大大提高复用性例如生活中的模板一寸照片模板:PPT模板:模板的特点:模板不可以直接使用,它只是一个框架模板的通用并不是万能的1.2 函数模板C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板C++提供两种模板机制:函数模板和类模板1.2.1 函数模板语法函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。语法:template<typename原创 2020-05-27 23:53:32 · 139 阅读 · 0 评论 -
C++核心编程(5)—— 文件操作
5 文件操作程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件 < fstream >文件类型分为两种:文本文件 - 文件以文本的ASCII码形式存储在计算机中二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作ifstream: 读操作fstream : 读写操作5.1文本文件5.1.1写文件写文件步骤如下:原创 2020-05-27 23:48:37 · 65 阅读 · 0 评论 -
C++核心编程(4.7)——多态
4.7 多态4.7.1 多态的基本概念多态是C++面向对象三大特性之一多态分为两类静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名动态多态: 派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定 - 运行阶段确定函数地址下面通过案例进行讲解多态class Animal{public: //Speak函数就是虚函数 //函数前面加上virtual关键字,变成虚函数,那么编译器在编原创 2020-05-27 23:47:39 · 186 阅读 · 0 评论 -
C++核心编程(4.6)—— 继承
4.6 继承继承是面向对象三大特性之一有些类与类之间存在特殊的关系,例如下图中:我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候我们就可以考虑利用继承的技术,减少重复代码4.6.1 继承的基本语法例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处普通实现://Java页面class Java {public: void h原创 2020-05-27 23:45:04 · 109 阅读 · 0 评论 -
C++核心编程(4.5)—— 运算符重载
4.5 运算符重载运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型4.5.1 加号运算符重载作用:实现两个自定义数据类型相加的运算class Person {public: Person() {}; Person(int a, int b) { this->m_A = a; this->m_B = b; } //成员函数实现 + 号运算符重载 Person operator+(const Person& p) { Per原创 2020-05-27 23:41:17 · 117 阅读 · 0 评论 -
C++核心编程(4.4)—— 友元
4.4 友元生活中你的家有客厅(Public),有你的卧室(Private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去但是呢,你也可以允许你的好闺蜜好基友进去。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为 friend友元的三种实现全局函数做友元类做友元成员函数做友元4.4.1 全局函数做友元class Building{ //告诉编译器原创 2020-05-27 23:40:14 · 198 阅读 · 0 评论 -
C++核心编程(4.3)—— C++对象模型和this指针
4.3 C++对象模型和this指针4.3.1 成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上class Person {public: Person() { mA = 0; } //非静态成员变量占对象空间 int mA; //静态成员变量不占对象空间 static int mB; //函数也不占对象空间,所有函数共享一个函数实例 void func() { cout << "mA:" <<原创 2020-05-27 23:39:16 · 89 阅读 · 0 评论 -
C++核心编程(4.2)—— 对象的初始化和清理
4.2 对象的初始化和清理生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候也会删除一些自己信息数据保证安全C++中的面向对象来源于生活,每个对象也都会有初始设置以及 对象销毁前的清理数据的设置。4.2.1 构造函数和析构函数对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始状态,对其使用后果是未知 同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题c++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和原创 2020-05-27 23:38:20 · 104 阅读 · 0 评论 -
C++核心编程(4.1)—— 封装
4.1 封装4.1.1 封装的意义封装是C++面向对象三大特性之一封装的意义:将属性和行为作为一个整体,表现生活中的事物将属性和行为加以权限控制封装意义一: 在设计类的时候,属性和行为写在一起,表现事物语法: class 类名{ 访问权限: 属性 / 行为 };**示例1:**设计一个圆类,求圆的周长示例代码://圆周率const double PI = 3.14;//1、封装的意义//将属性和行为作为一个整体,用来表现生活中的事物//封装一个圆类,求圆的周长//原创 2020-05-27 23:37:02 · 191 阅读 · 0 评论 -
C++核心编程(4)——类与对象
4 类和对象C++面向对象的三大特性为:封装、继承、多态C++认为万事万物都皆为对象,对象上有其属性和行为例如: 人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌… 车也可以作为对象,属性有轮胎、方向盘、车灯…,行为有载人、放音乐、放空调… 具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类具体的内容将会在后面的博客中详细讲述。本篇笔记是在观看完黑马C++教程后整理的笔记,希望对大家有所帮助!...原创 2020-05-27 23:35:39 · 94 阅读 · 0 评论 -
C++核心编程(3)—— 函数提高
3 函数提高3.1 函数默认参数在C++中,函数的形参列表中的形参是可以有默认值的。语法:返回值类型 函数名 (参数= 默认值){}示例:int func(int a, int b = 10, int c = 10) { return a + b + c;}//1. 如果某个位置参数有默认值,那么从这个位置往后,从左向右,必须都要有默认值//2. 如果函数声明有默认值,函数实现的时候就不能有默认参数int func2(int a = 10, int b = 10);int func2原创 2020-05-27 23:32:49 · 117 阅读 · 0 评论 -
C++核心编程(2)——引用
2 引用2.1 引用的基本使用**作用: **给变量起别名语法: 数据类型 &别名 = 原名示例:int main() { int a = 10; int &b = a; cout << "a = " << a << endl; cout << "b = " << b << endl; b = 100; cout << "a = " << a << end原创 2020-05-27 23:31:30 · 149 阅读 · 0 评论 -
C++核心编程(1)—— 内存分区模型
1 内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程1.1 程序运行前 在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域 代码区: 存放 CPU 执行的机器指令原创 2020-05-27 23:30:25 · 104 阅读 · 0 评论 -
C++编程基础(8)——结构体
8 结构体8.1 结构体基本概念结构体属于用户自定义的数据类型,允许用户存储不同的数据类型8.2 结构体定义和使用语法:struct 结构体名 { 结构体成员列表 };通过结构体创建变量的方式有三种:struct 结构体名 变量名struct 结构体名 变量名 = { 成员1值 , 成员2值…}定义结构体时顺便创建变量示例://结构体定义struct student{ //成员列表 string name; //姓名 int age; //年龄 int sco原创 2020-05-27 23:26:04 · 249 阅读 · 0 评论 -
C++编程基础(7)—— 指针
7 指针7.1 指针的基本概念指针的作用: 可以通过指针间接访问内存内存编号是从0开始记录的,一般用十六进制数字表示可以利用指针变量保存地址7.2 指针变量的定义和使用指针变量定义语法: 数据类型 * 变量名;示例:int main() { //1、指针的定义 int a = 10; //定义整型变量a //指针定义语法: 数据类型 * 变量名 ; int * p; //指针变量赋值 p = &a; //指针指向变量a的地址 cout <&原创 2020-05-27 23:24:32 · 115 阅读 · 0 评论 -
C++编程基础(6)—— 函数
6 函数6.1 概述**作用:**将一段经常使用的代码封装起来,减少重复代码一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能。6.2 函数的定义函数的定义一般主要有5个步骤:1、返回值类型2、函数名3、参数表列4、函数体语句5、return 表达式语法:返回值类型 函数名 (参数列表){ 函数体语句 return表达式}返回值类型 :一个函数可以返回一个值。在函数定义中函数名:给函数起个名称参数列表:使用该函数时,传入的数据原创 2020-05-27 23:23:17 · 272 阅读 · 0 评论 -
C++编程基础(5)——数组
5 数组5.1 概述所谓数组,就是一个集合,里面存放了相同类型的数据元素**特点1:**数组中的每个数据元素都是相同的数据类型**特点2:**数组是由连续的内存位置组成的5.2 一维数组5.2.1 一维数组定义方式一维数组定义的三种方式:数据类型 数组名[ 数组长度 ];数据类型 数组名[ 数组长度 ] = { 值1,值2 ...};数据类型 数组名[ ] = { 值1,值2 ...};示例int main() { //定义方式1 //数据类型 数组名[元素个数]; in原创 2020-05-27 23:21:30 · 413 阅读 · 0 评论 -
C++编程基础(4)—— 程序流程结构
4 程序流程结构C/C++支持最基本的三种程序运行结构:顺序结构、选择结构、循环结构顺序结构:程序按顺序执行,不发生跳转选择结构:依据条件是否满足,有选择的执行相应功能循环结构:依据条件是否满足,循环多次执行某段代码4.1 选择结构4.1.1 if语句**作用:**执行满足条件的语句if语句的三种形式单行格式if语句多行格式if语句多条件的if语句单行格式if语句:if(条件){ 条件满足执行的语句 }示例:int main() { //选择结构原创 2020-05-27 23:15:57 · 190 阅读 · 0 评论 -
C++编程基础(3)—— 运算符
3 运算符**作用:**用于执行代码的运算本章我们主要讲解以下几类运算符:运算符类型作用算术运算符用于处理四则运算赋值运算符用于将表达式的值赋给变量比较运算符用于表达式的比较,并返回一个真值或假值逻辑运算符用于根据表达式的值返回真值或假值3.1 算术运算符作用:用于处理四则运算算术运算符包括以下符号:运算符术语示例结果+正号+33-负号-3-3+加10 + 515-减10 - 5原创 2020-05-27 23:09:49 · 515 阅读 · 0 评论 -
C++编程基础(2)—— 数据类型
2 数据类型C++规定在创建一个变量或者常量时,必须要指定出相应的数据类型,否则无法给变量分配内存2.1 整型作用:整型变量表示的是整数类型的数据C++中能够表示整型的类型有以下几种方式,区别在于所占内存空间不同:数据类型占用空间取值范围short(短整型)2字节(-2^15 ~ 2^15-1)int(整型)4字节(-2^31 ~ 2^31-1)long(长整形)Windows为4字节,Linux为4字节(32位),8字节(64位)(-2^31 ~ 2原创 2020-05-27 23:06:42 · 312 阅读 · 0 评论 -
C++编程基础(1)—— C++初识
C++基础入门1 C++初识1.1 第一个C++程序编写一个C++程序总共分为4个步骤创建项目创建文件编写代码运行程序1.1.1 创建项目 Visual Studio是我们用来编写C++程序的主要工具,我们先将它打开[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IW8P3WhC-1590590927156)(assets/1541383178746.png)][外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-P5aQm原创 2020-05-27 23:02:05 · 162 阅读 · 0 评论