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 · 193 阅读 · 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 · 137 阅读 · 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 · 364 阅读 · 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 · 176 阅读 · 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 · 194 阅读 · 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 · 256 阅读 · 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 · 218 阅读 · 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 · 327 阅读 · 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中所有元素都是pair pair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值) 所有元素都会根据元素的键值自动排序 本质: map/multimap属于关联式容器,底层结构是用二叉树实现。 优点: 可以根据key值快速找到value值原创 2020-11-19 00:00:58 · 179 阅读 · 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 · 171 阅读 · 0 评论 -
C++编程思想之泛型编程——模板(C++学习记录)
1.1 模板的概念 模板就是建立通用的模具,大大提高复用性 例如生活中的模板 一寸照片模板: PPT模板: 模板的特点: 模板不可以直接使用,它只是一个框架 模板的通用并不是万能的 1.2 函数模板 C++另一种编程思想称为 泛型编程 ,主要利用的技术就是模板 C++提供两种模板机制:函数模板和类模板 1.2.1 函数模板语法 函数模板作用: 建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表。 语法: template<typename T> 函原创 2020-11-19 00:02:27 · 257 阅读 · 1 评论 -
关于C++中的文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放 通过文件可以将数据持久化 C++中对文件操作需要包含头文件 < fstream > 文件类型分为两种: 文本文件 - 文件以文本的ASCII码形式存储在计算机中 二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂它们 操作文件的三大类: ofstream:写操作 ifstream: 读操作 fstream : 读写操作 5.1文本文件 5.1.1写文件 写文件步骤如下: 包含头文件 #原创 2020-11-16 08:36:15 · 173 阅读 · 0 评论 -
C++面向对象三大特性之一——多态(附加案例分析)
多态的基本概念 多态是C++面向对象三大特性之一 多态分为两类 静态多态: 函数重载 和 运算符重载属于静态多态,复用函数名 动态多态: 派生类和虚函数实现运行时多态 静态多态和动态多态区别: 静态多态的函数地址早绑定 - 编译阶段确定函数地址 动态多态的函数地址晚绑定 - 运行阶段确定函数地址 下面通过案例进行讲解多态 class Animal { public: //Speak函数就是虚函数 //函数前面加上virtual关键字,变成虚函数,那么编译器在编译的时候就不能确定函数调用了原创 2020-11-16 08:35:57 · 379 阅读 · 0 评论 -
C++中的继承与派生机制
继承 继承是面向对象三大特性之一 有些类与类之间存在特殊的关系,例如下图中: 我们发现,定义这些类时,下级别的成员除了拥有上一级的共性,还有自己的特性。 这个时候我们就可以考虑利用继承的技术,减少重复代码 4.6.1 继承的基本语法 例如我们看到很多网站中,都有公共的头部,公共的底部,甚至公共的左侧列表,只有中心内容不同 接下来我们分别利用普通写法和继承的写法来实现网页中的内容,看一下继承存在的意义以及好处 普通实现: //Java页面 class Java { public: void header原创 2020-11-16 08:35:40 · 281 阅读 · 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 · 212 阅读 · 0 评论 -
全面理解C++中的友元
生活中你的家有客厅(Public),有你的卧室(Private) 客厅所有来的客人都可以进去,但是你的卧室是私有的,也就是说只有你能进去 但是呢,你也可以允许你的好闺蜜好基友进去。 在程序里,有些私有属性 也想让类外特殊的一些函数或者类进行访问,就需要用到友元的技术 友元的目的就是让一个函数或者类 访问另一个类中私有成员 友元的关键字为 friend 友元的三种实现 全局函数做友元 类做友元 成员函数做友元 4.4.1 全局函数做友元 class Building { //告诉编译器 goodGay原创 2020-11-16 08:35:09 · 148 阅读 · 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 · 133 阅读 · 0 评论 -
C++中的静态成员(面试经典常考)
静态成员 静态成员就是在成员变量和成员函数前加上关键字static,称为静态成员 静态成员分为: 静态成员变量 所有对象共享同一份数据 在编译阶段分配内存 类内声明,类外初始化 静态成员函数 所有对象共享同一个函数 静态成员函数只能访问静态成员变量 **示例1 :**静态成员变量 class Person { public: static int m_A; //静态成员变量 //静态成员变量特点: //1 在编译阶段分配内存 //2 类内声明,类外初始化 //3 所有对象共原创 2020-11-15 14:48:13 · 175 阅读 · 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 · 2420 阅读 · 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 · 142 阅读 · 0 评论 -
关于C++中的深拷贝与浅拷贝(面试经典常考问题)
深拷贝与浅拷贝 深浅拷贝是面试经典问题,也是常见的一个坑 浅拷贝:简单的赋值拷贝操作 深拷贝:在堆区重新申请空间,进行拷贝操作 示例: class Person { public: //无参(默认)构造函数 Person() { cout << "无参构造函数!" << endl; } //有参构造函数 Person(int age ,int height) { cout << "有参构造函数!" << endl; m_age =原创 2020-11-15 14:34:37 · 486 阅读 · 0 评论 -
C++中对象的初始化和清理——构造函数和析构函数
4.2 对象的初始化和清理 生活中我们买的电子产品都基本会有出厂设置,在某一天我们不用时候也会删除一些自己信息数据保证安全 C++中的面向对象来源于生活,每个对象也都会有初始设置以及 对象销毁前的清理数据的设置。 4.2.1 构造函数和析构函数 对象的初始化和清理也是两个非常重要的安全问题 一个对象或者变量没有初始状态,对其使用后果是未知 同样的使用完一个对象或变量,没有及时清理,也会造成一定的安全问题 c++利用了构造函数和析构函数解决上述问题,这两个函数将会被编译器自动调用,完成对象初始化和原创 2020-11-15 14:30:05 · 406 阅读 · 0 评论 -
初步认识C++中的类和对象(C++学习记录)
C++面向对象的三大特性为:封装、继承、多态 C++认为万事万物都皆为对象,对象上有其属性和行为 例如: 人可以作为对象,属性有姓名、年龄、身高、体重…,行为有走、跑、跳、吃饭、唱歌… 车也可以作为对象,属性有轮胎、方向盘、车灯…,行为有载人、放音乐、放空调… 具有相同性质的对象,我们可以抽象称为类,人属于人类,车属于车类 4.1 封装 4.1.1 封装的意义 封装是C++面向对象三大特性之一 封装的意义: 将属性和行为作为一个整体,表现生活中的事物 将属性和行为加以权限控制 封装意义一:原创 2020-11-15 11:40:40 · 173 阅读 · 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 · 223 阅读 · 0 评论 -
内存分区模型(C++学习记录)
一、内存分区模型 C++程序在执行时,将内存大方向划分为4个区域 代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放, 存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收 内存四区意义: 不同区域存放的数据,赋予不同的生命周期, 给我们更大的灵活编程 程序运行前 在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域 代码区: 存放 CPU 执行的机器指令. 代码区原创 2020-11-15 10:39:13 · 189 阅读 · 0 评论
分享