C++开发学习之路
all is okk
这个作者很懒,什么都没留下…
展开
-
C++的面向对象和泛型编程思想——STL(标准模板库)常用容器之deque容器
deque容器3.3.1 deque容器基本概念3.3.2 deque构造函数3.3.3 deque赋值操作3.3.4 deque大小操作3.3.5 deque 插入和删除3.3.6 deque 数据存取3.3.7 deque 排序3.3.1 deque容器基本概念功能:双端数组,可以对头端进行插入删除操作deque与vector区别:vector对于头部的插入删除效率低,数据量越大,效率越低deque相对而言,对头部的插入删除速度回比vector快vector访问元素时的速度会比de转载 2020-11-18 00:19:51 · 127 阅读 · 0 评论 -
C++的面向对象和泛型编程思想——STL(标准模板库)常用容器之string容器
string容器3.1.1 string基本概念3.1.2 string构造函数3.1.3 string赋值操作3.1.4 string字符串拼接3.1.5 string查找和替换3.1.6 string字符串比较3.1.7 string字符存取3.1.8 string插入和删除3.1.9 string子串3.1.1 string基本概念本质:string是C++风格的字符串,而string本质上是一个类string和char * 区别:char * 是一个指针string是一个类,类内部原创 2020-11-18 00:19:14 · 86 阅读 · 0 评论 -
C++的面向对象和泛型编程思想——STL(标准模板库)常用容器之vector容器
vector容器3.2.1 vector基本概念3.2.2 vector构造函数3.2.3 vector赋值操作3.2.4 vector容量和大小3.2.5 vector插入和删除3.2.6 vector数据存取3.2.7 vector互换容器3.2.8 vector预留空间3.2.1 vector基本概念功能:vector数据结构和数组非常相似,也称为单端数组vector与普通数组区别:不同之处在于数组是静态空间,而vector可以动态扩展动态扩展:并不是在原空间之后续接新空间,原创 2020-11-18 00:19:35 · 247 阅读 · 0 评论 -
C++的面向对象和泛型编程思想——STL(标准模板库)常用容器之stack、queue容器(栈与队列)
栈与队列3.5 stack 容器3.5.1 stack 基本概念3.5.2 stack 常用接口3.6 queue 容器3.6.1 queue 基本概念3.6.2 queue 常用接口3.5 stack 容器3.5.1 stack 基本概念概念:stack是一种先进后出(First In Last Out,FILO)的数据结构,它只有一个出口栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为栈中进入数据称为 — 入栈 push栈中弹出数据称为 — 出栈 pop生活中的栈:3原创 2020-11-18 00:20:38 · 120 阅读 · 0 评论 -
C++的面向对象和泛型编程思想——STL(标准模板库)常用容器之list容器
list容器3.7.1 list基本概念3.7.2 list构造函数3.7.3 list 赋值和交换3.7.4 list 大小操作3.7.5 list 插入和删除3.7.6 list 数据存取3.7.7 list 反转和排序3.7.8 排序案例3.7.1 list基本概念**功能:**将数据进行链式存储链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表的组成:链表由一系列结点组成结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地转载 2020-11-19 00:02:43 · 143 阅读 · 0 评论 -
STL- 常用算法(C++学习记录)
STL- 常用算法5.1 常用遍历算法5.1.1 for_each5.1.2 transform5.2 常用查找算法5.2.1 find5.2.2 find_if5.2.3 adjacent_find5.2.4 binary_search5.2.5 count5.2.6 count_if概述:算法主要是由头文件<algorithm> <functional> <numeric>组成。<algorithm>是所有STL头文件中最大的一个,范围涉及到原创 2020-11-19 00:02:15 · 198 阅读 · 0 评论 -
STL- 函数对象(C++学习记录)
STL- 函数对象4.1 函数对象4.1.1 函数对象概念4.1.2 函数对象使用4.2 谓词4.2.1 谓词概念4.2.2 一元谓词4.2.3 二元谓词4.3 内建函数对象4.3.1 内建函数对象意义4.3.2 算术仿函数4.3.3 关系仿函数4.3.4 逻辑仿函数4.1 函数对象4.1.1 函数对象概念概念:重载函数调用操作符的类,其对象常称为函数对象函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数4.1.2 函数对象使用特原创 2020-11-19 00:01:57 · 140 阅读 · 0 评论 -
C++ string、vector、map容器实战案例——员工分组
3.10.1 案例描述公司今天招聘了10个员工(ABCDEFGHIJ),10名员工进入公司之后,需要指派员工在那个部门工作员工信息有: 姓名 工资组成;部门分为:策划、美术、研发随机给10名员工分配部门和工资通过multimap进行信息的插入 key(部门编号) value(员工)分部门显示员工信息3.10.2 实现步骤创建10名员工,放到vector中遍历vector容器,取出每个员工,进行随机分组分组后,将员工部门编号作为key,具体员工作为value,放入到multimap原创 2020-11-19 00:01:36 · 253 阅读 · 0 评论 -
C++的面向对象和泛型编程思想——STL(标准模板库)常用容器之map/ multimap容器
map/ multimap容器3.9.1 map基本概念3.9.2 map构造和赋值3.9.3 map大小和交换3.9.4 map插入和删除3.9.5 map查找和统计3.9.6 map容器排序3.9.1 map基本概念简介:map中所有元素都是pairpair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)所有元素都会根据元素的键值自动排序本质:map/multimap属于关联式容器,底层结构是用二叉树实现。优点:可以根据key值快速找到value值原创 2020-11-19 00:00:58 · 118 阅读 · 0 评论 -
C++的面向对象和泛型编程思想——STL(标准模板库)常用容器之set/ multiset 容器
set/multiset 容器3.8.1 set基本概念3.8.2 set构造和赋值3.8.3 set大小和交换3.8.4 set插入和删除3.8.5 set查找和统计3.8.6 set和multiset区别3.8.7 pair对组创建3.8.8 set容器排序3.8.1 set基本概念简介:所有元素都会在插入时自动被排序本质:set/multiset属于关联式容器,底层结构是用二叉树实现。set和multiset区别:set不允许容器中有重复的元素multiset允许容器中有重复原创 2020-11-19 00:00:39 · 113 阅读 · 0 评论 -
C++编程思想之泛型编程——模板(C++学习记录)
1.1 模板的概念模板就是建立通用的模具,大大提高复用性例如生活中的模板一寸照片模板:PPT模板:模板的特点:模板不可以直接使用,它只是一个框架模板的通用并不是万能的1.2 函数模板C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板C++提供两种模板机制:函数模板和类模板1.2.1 函数模板语法函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。语法:template<typename T>函原创 2020-11-19 00:02:27 · 207 阅读 · 1 评论 -
关于C++中的文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放通过文件可以将数据持久化C++中对文件操作需要包含头文件 < fstream >文件类型分为两种:文本文件 - 文件以文本的ASCII码形式存储在计算机中二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们操作文件的三大类:ofstream:写操作ifstream: 读操作fstream : 读写操作5.1文本文件5.1.1写文件写文件步骤如下:包含头文件#原创 2020-11-16 08:36:15 · 101 阅读 · 0 评论 -
C++面向对象三大特性之一——多态(附加案例分析)
多态的基本概念多态是C++面向对象三大特性之一多态分为两类静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名动态多态: 派生类和虚函数实现运行时多态静态多态和动态多态区别:静态多态的函数地址早绑定 - 编译阶段确定函数地址动态多态的函数地址晚绑定 - 运行阶段确定函数地址下面通过案例进行讲解多态class Animal{public: //Speak函数就是虚函数 //函数前面加上virtual关键字,变成虚函数,那么编译器在编译的时候就不能确定函数调用了原创 2020-11-16 08:35:57 · 263 阅读 · 0 评论 -
C++中的继承与派生机制
继承继承是面向对象三大特性之一有些类与类之间存在特殊的关系,例如下图中:我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。这个时候我们就可以考虑利用继承的技术,减少重复代码4.6.1 继承的基本语法例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处普通实现://Java页面class Java {public: void header原创 2020-11-16 08:35:40 · 212 阅读 · 0 评论 -
运算符重载(C++学习记录)
运算符重载概念:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型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) { Person temp;原创 2020-11-16 08:35:19 · 125 阅读 · 0 评论 -
全面理解C++中的友元
生活中你的家有客厅(Public),有你的卧室(Private)客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去但是呢,你也可以允许你的好闺蜜好基友进去。在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术友元的目的就是让一个函数或者类 访问另一个类中私有成员友元的关键字为 friend友元的三种实现全局函数做友元类做友元成员函数做友元4.4.1 全局函数做友元class Building{ //告诉编译器 goodGay原创 2020-11-16 08:35:09 · 99 阅读 · 0 评论 -
C++对象模型和this指针(C++学习记录)
C++对象模型和this指针4.3.1 成员变量和成员函数分开存储在C++中,类内的成员变量和成员函数分开存储只有非静态成员变量才属于类的对象上class Person {public: Person() { mA = 0; } //非静态成员变量占对象空间 int mA; //静态成员变量不占对象空间 static int mB; //函数也不占对象空间,所有函数共享一个函数实例 void func() { cout << "mA:" << th原创 2020-11-15 14:55:11 · 86 阅读 · 0 评论 -
C++中的静态成员(面试经典常考)
静态成员静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员静态成员分为:静态成员变量所有对象共享同一份数据在编译阶段分配内存类内声明,类外初始化静态成员函数所有对象共享同一个函数静态成员函数只能访问静态成员变量**示例1 :**静态成员变量class Person{ public: static int m_A; //静态成员变量 //静态成员变量特点: //1 在编译阶段分配内存 //2 类内声明,类外初始化 //3 所有对象共原创 2020-11-15 14:48:13 · 120 阅读 · 0 评论 -
C++ 类对象作为类成员时,构造和析构的顺序
类对象作为类成员C++类中的成员可以是另一个类的对象,我们称该成员为 对象成员例如:class A {}class B{ A a;}B类中有对象A作为成员,A为对象成员那么当创建B对象时,A与B的构造和析构的顺序是谁先谁后?示例:class Phone{public: Phone(string name) { m_PhoneName = name; cout << "Phone构造" << endl; } ~Phone() {转载 2020-11-15 14:40:20 · 1895 阅读 · 1 评论 -
关于C++的初始化列表
初始化列表作用:C++提供了初始化列表语法,用来初始化属性语法:构造函数():属性1(值1),属性2(值2)... {}示例:class Person {public: ////传统方式初始化 //Person(int a, int b, int c) { // m_A = a; // m_B = b; // m_C = c; //} //初始化列表方式初始化 Person(int a, int b, int c) :m_A(a), m_B(b), m_C(c) {} vo转载 2020-11-15 14:38:35 · 91 阅读 · 0 评论 -
关于C++中的深拷贝与浅拷贝(面试经典常考问题)
深拷贝与浅拷贝深浅拷贝是面试经典问题,也是常见的一个坑浅拷贝:简单的赋值拷贝操作深拷贝:在堆区重新申请空间,进行拷贝操作示例:class Person {public: //无参(默认)构造函数 Person() { cout << "无参构造函数!" << endl; } //有参构造函数 Person(int age ,int height) { cout << "有参构造函数!" << endl; m_age =原创 2020-11-15 14:34:37 · 396 阅读 · 0 评论 -
C++中对象的初始化和清理——构造函数和析构函数
4.2 对象的初始化和清理生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候也会删除一些自己信息数据保证安全C++中的面向对象来源于生活,每个对象也都会有初始设置以及 对象销毁前的清理数据的设置。4.2.1 构造函数和析构函数对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始状态,对其使用后果是未知 同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题c++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和原创 2020-11-15 14:30:05 · 337 阅读 · 0 评论 -
初步认识C++中的类和对象(C++学习记录)
C++面向对象的三大特性为:封装、继承、多态C++认为万事万物都皆为对象,对象上有其属性和行为例如: 人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌… 车也可以作为对象,属性有轮胎、方向盘、车灯…,行为有载人、放音乐、放空调… 具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类4.1 封装4.1.1 封装的意义封装是C++面向对象三大特性之一封装的意义:将属性和行为作为一个整体,表现生活中的事物将属性和行为加以权限控制封装意义一:原创 2020-11-15 11:40:40 · 123 阅读 · 0 评论 -
彻底搞懂C++的引用(C++学习记录)
2.1 引用的基本使用**作用: **给变量起别名语法: `数据类型 &别名 = 原名示例:int main() { int a = 10; int &b = a; cout << "a = " << a << endl; cout << "b = " << b << endl; b = 100; cout << "a = " << a << endl;原创 2020-11-15 10:53:19 · 169 阅读 · 0 评论 -
内存分区模型(C++学习记录)
一、内存分区模型C++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的全局区:存放全局变量和静态变量以及常量栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区意义:不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程程序运行前在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域代码区: 存放 CPU 执行的机器指令. 代码区原创 2020-11-15 10:39:13 · 140 阅读 · 0 评论