![](https://img-blog.csdnimg.cn/20200911164928235.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++学习笔记
B站自学C++笔记合集
DeSt!ny
这个作者很懒,什么都没留下…
展开
-
(C++)数据结构实验二——迷宫问题
BFS算法迷宫#include <iostream>#include <string>//#include <queue>#include "QueueBottom.h"#include <fstream>using namespace std;#include <iomanip>#include <Windows.h>#include <time.h>clock_t start,finish;原创 2020-11-11 17:33:36 · 1411 阅读 · 0 评论 -
(C++)数据结构实验(1) —— 用链表实现集合的交并差
(C++)数据结构实验(1) —— 用链表实现集合的交并差原创 2020-10-28 15:56:30 · 895 阅读 · 0 评论 -
(C++)STL基础案例2——员工分组
3.10.1案例描述·公司今天招聘了10个员工(ABCDEFGHIJ),10名员工进入公司后,需要指派员工在哪个部门工作。·员工信息有:姓名 工资组成; 部门分为:策划、美术、研发·随机给10名员工分配部门和工资·通过multimap进行信息的插入 key(部门编号) value(员工)·分部门显示员工信息3.10.2实现步骤1.创建10名员工,放到vector中2.遍历vector容器,取出每个员工,进行随机分组3.分组后,将员工部门编号作为key,具体工作为(value),放入mul原创 2020-10-18 11:43:35 · 185 阅读 · 0 评论 -
(C++)map/multimap 容器基础知识
3.9 map/multimap 容器3.9.1 基本概念简介:map中所有元素都是pairpair中第一个元素为key(键值),起到索引作用,第二个元素为value(实值)所有元素都会根据元素的键值自动排序本质:map/multimap 属于关联式容器,底层结构是用二叉树实现优点:可以根据key值快速找到value值map和multimap区别:map不允许容器中有重复的key值元素multimap允许容器中有重复的key值元素3.9.2 map构造和赋值函数原型:原创 2020-10-13 17:33:02 · 254 阅读 · 0 评论 -
(C++)set/multiset 容器基础知识
目录3.8 set/multiset 容器3.8.1 set基本概念3.8.2 set构造和赋值3.8.3 set大小和交换3.8 set/multiset 容器3.8.1 set基本概念本质:set/mulitiset 属于关联式容器,底层结构是用二叉树实现。set和multiset区别:set不允许容器中有重复的元素。multiset允许容器中有重复的元素。3.8.2 set构造和赋值#include <iostream>#include <set>u原创 2020-10-10 18:20:02 · 211 阅读 · 0 评论 -
(C++)链表实现集合的交并差
链表实现集合的交并差#include <iostream>#include <string>using namespace std;//可以用于类似于检测卷面相似度 或者 答题卡答案的比对struct LNode{ char data; struct LNode *next;};LNode* createList(){ int n; LNode* head = new LNode; //在堆上生成,函数结束后才可以保存 LNode* pre = he原创 2020-10-08 20:09:03 · 2213 阅读 · 1 评论 -
(C++) 用STL中的容器实现打分功能
3.4 案例-评委打分3.4.1 案例描述有5名选手:选手ABCDE,10个评委分别对每一个选手打分,去除评委打分中的一个最高分和最低分,取平均分。3.4.2 实现步骤 1.创建5名选手,放到vector中 2.遍历vector容器,取出来每一个选手,执行for循环,可以把10个评分打分存到deque容器中 3.sort算法对deque容器中分数排序,去除最高和最低分 4.deque容器遍历一遍,累加总分 5.获取平均分#include <iostream>#includ原创 2020-10-08 10:34:32 · 144 阅读 · 0 评论 -
(C++) queue容器基础知识
目录3.6 queue容器3.6.1 queue 基本概念3.6.2 queue 常用接口3.6 queue容器3.6.1 queue 基本概念概念: Queue是一种先进先出的数据结构,它有两个出口 队列容器允许从一端新增元素,从另一端移除元素 队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为 队列中进数据称为 —— 入队 push 只有队头和队尾能被外界访问,因此队列不允许有遍历行为。3.6.2 queue 常用接口构造函数: queue<原创 2020-10-06 11:36:30 · 243 阅读 · 0 评论 -
(C++) stack容器基础知识
3.5 stack 容器3.5.1 stack 基本概念概念:stack 是一种先进后出的数据结构,它只有一个出口。栈中只有顶端的元素才可以被外界使用,因此栈不允许有遍历行为。栈中进入数据称为 —— 入栈 push栈中弹出数据称为 —— 出栈 pop3.5.2 stack常用接口构造函数: stack<T> stk; //stack采用模板类实现,stack对象的默认构造形式 stack(const stack &stk); //拷贝构造函数原创 2020-10-05 10:42:14 · 184 阅读 · 0 评论 -
(C++)用 STL 中的 list 实现交并差运算
用 STL 中的 list 实现交并差运算#include <iostream>#include <list>using namespace std;void printList(const list<int>&L){ for(list<int>::const_iterator it = L.begin(); it != L.end(); it++) { cout << *it << " "; } co原创 2020-09-29 21:03:27 · 263 阅读 · 2 评论 -
(C++)链表的创建解析
C++链表的创建#include <iostream>using namespace std;/* 创建一个单链表 */struct ListNode{ int m_key; ListNode* next;};void createList(ListNode* pHead){ ListNode* p = pHead; for (int i = 1; i < 10; ++i) { ListNode* pNewNode = new原创 2020-09-28 19:47:07 · 180 阅读 · 0 评论 -
(C++)deque 容器基础知识
目录3.3 deque容器3.3.1 deque容器基本概念3.3.2 deque 构造函数3.3.3 deque 赋值操作3.3.4 deque 容器大小操作3.3 deque容器3.3.1 deque容器基本概念功能: 双端数组,可以对头端进行插入删除操作deque与vector的区别: vector对于头部的插入删除效率低,数据量较大,效率较低 deque相对而言对头部的插入删除速度比vector快 vector访问元素时的速度会比deque快,这和两者内部实现有关deque内原创 2020-09-27 16:23:46 · 225 阅读 · 0 评论 -
(C++)vector 容器基础知识
这里写目录标题3.2 vector容器3.2.1 vector基本概念3.2.2 vector构造函数3.2.3 vector 赋值操作————————————————————————————————————————3.2 vector容器3.2.1 vector基本概念功能:vector 数据结构和数组非常相似,也称为单端数组vector 与普通数组区别:不同之处在于数组是静态空间,而vector可以动态扩展动态扩展:并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据原创 2020-09-23 17:07:35 · 267 阅读 · 0 评论 -
(C++)string 容器基础知识
目录3.1 string 容器3.1.1 string 基本概念3.1.2 string 构造函数3.1.3 string 赋值操作3.1 string 容器3.1.1 string 基本概念本质: string 是 C++风格的字符串,而string本质上是一个类string 和 char* 的区别: char* 是一个指针 string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器特点: string 类内部封装了很多成员方法 例如:查找fin原创 2020-09-20 17:21:36 · 186 阅读 · 0 评论 -
(C++)list 容器基础知识
目录3.7 list 容器3.7.1 list 基本概念3.7.2 list 构造函数3.7.3 list 赋值和交换3.7.4 list 大小操作3.7 list 容器3.7.1 list 基本概念功能:将数据进行链式存储。链表是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的。链表的组成:链表由一系列结点组成。结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。STL中的链表是一个双向循环链表由于链表的存储方式并不是连续的内原创 2020-09-17 20:39:38 · 245 阅读 · 0 评论 -
(C++)STL初始+基础知识
2.STL初识2.1 STL的诞生长久以来,软件界一直希望建立一种可重复利用的东西C++的 面向对象 和 泛型编程 的思想, 目的就是 复用性的提升大多情况下,数据结构和算法都未能有一套标准,导致被迫从事大量 重复工作为了建立数据结构和算法的一套标准,诞生了STL2.2 STL基本概念STL(Standard Template Library 标准模板库)STL从广义上分为: 容器(container) 算法(algorithm) 迭代器(iterator)容器 和 算法之间通过迭代器进行原创 2020-09-12 16:02:25 · 198 阅读 · 0 评论 -
(C++)模板基础案例
类模板案例案例描述:实现一个通用的数组类,要求如下:1.可以对内置数据类型以及自定义数据类型的数据进行存储。2.将数组中的数据存储到堆区3.构造函数中可以传入数组的容量4.提供对应的拷贝构造函数以及 operator= 防止浅拷贝问题5.提供 尾插法 和 尾删法对数组中的数据进行增加和删除6.可以通过下标的方式访问数组中的元素7.可以获取数组中当前元素个数和数组的容量MyArray.hpp#pragma once#include <iostream>using na原创 2020-09-11 16:52:36 · 149 阅读 · 0 评论 -
(C++)函数模板与类模板基础知识
目录一、模板的概念二、函数模板一、模板的概念模板就是建立通用的模具,大大提高复用性。二、函数模板原创 2020-09-10 15:43:14 · 260 阅读 · 0 评论 -
(C++)文本文件以及二进制文件的读写操作
目录文件的读写一、文本文件——写文件二、文本文件——读文件文件的读写程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被释放,通过文件可以将数据持久化C++中对文件操作需要包含头文件 fstream文件类型分为两种:1.文本文件 - 文件以文本的ASCll码形式存储在计算机中2.二进制文件 - 文件以文本的二进制形式存储在计算机中,用户一般不能直接读懂他们操作文件的三大类:1.ofstream:写操作2.ifstream:读操作3.fstream :读写操作一、原创 2020-08-30 12:06:58 · 1103 阅读 · 0 评论 -
(C++)类与对象——多态基础案例
目录多态的优点一、计算机类~~普通写法~~==多态写法==多态的优点1.代码组织结构清晰2.可读性强3.利于前期和后期的扩展与维护一、计算机类普通写法#include <iostream>#include <string>using namespace std;class Calculator{public: int getResult(string oper) { if (oper == "+") { return m_Num1 +原创 2020-08-28 16:48:07 · 138 阅读 · 0 评论 -
(C++)类与对象——多态基础知识
目录一、多态的基本概念二、多态的原理剖析一、多态的基本概念#include <string>#include <iostream>using namespace std;/*动态多态的满足条件1.有继承关系2.子类中重写父类的虚函数重写:函数返回值类型 函数名 参数列表 完全一致称为重写动态多态的使用父类的指针或者引用, 执行子类对象*/class Animal{public: virtual void speak() { cout &l原创 2020-08-28 10:55:16 · 143 阅读 · 0 评论 -
(C++)类和对象——继承的基础知识与问题
继承一、继承的基本语法二、继承方式三、继承中的对象模型四、父类子类中构造与析构的顺序一、继承的基本语法语法:class 子类 : 继承方式 父类。class Father{};class Son : public Father{};#include <string>#include <iostream>using namespace std;class BasePage{public: void header() { cout <&原创 2020-08-25 16:39:53 · 195 阅读 · 0 评论 -
(C++)类与对象——运算符的重载
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档运算符重载一、 “ + ” 号运算符重载二、 “ << ” 运算符重载三、“ ++ ” 运算符重载四、“ -- ” 运算符重载总结 运算符重载:对已有的运算符重新进行定义,赋予其另一种功能,以适应不同的数据类型。一、 “ + ” 号运算符重载#include <string>#include "iostream"using namespace std;class Person{public:原创 2020-08-23 17:47:52 · 1694 阅读 · 0 评论 -
(C++)类和对象——友元基础知识
友元的目的是让一个函数或者类,访问另一个类中的私有成员。一、全局函数做友元#include <string>#include "iostream"using namespace std;class Home{ friend void goodGay(Home *home); //全局函数做友元public: Home(); string m_SittingRoom;private: string m_BedRoom;};Home::Home(){ m_Sit原创 2020-08-18 22:57:57 · 141 阅读 · 0 评论 -
(C++)类与对象——对象特性——C++对象模型和this指针
一、成员变量与成员函数分开储存1.空对象所占字节为12.只有非静态成员变量占字节空间#include <string>#include "iostream"using namespace std;class Person{public: int m_B; //非静态成员 , 属于类对象上 static int m_A; //静态成员 , 不属于类对象上 void func() //静态成员函数 , 不属于类对象上 { } static vo原创 2020-08-17 17:17:34 · 134 阅读 · 0 评论 -
(C++)类与对象——对象特性
对象特性一、析构函数和构造函数构造函数:创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无需手动调用。析构函数:对象销毁前系统自动调用,执行一些清理工作。#include <string>#include "iostream"using namespace std;class Person{ /* 1.没有返回值 不用写void 2.函数名与类名相同 3.构造函数可以有参数,可以发生重载 4.创建对象的时候,构造函数会自动调用,而且只调用一次 */pu原创 2020-08-13 17:34:11 · 329 阅读 · 0 评论 -
(C++)类与对象——封装基础设计案例2例
基础案例1设计立方体类,求出面积和体积,分别用全局函数和成员函数判断两个立方体是否相同。#include <string>#include "iostream"using namespace std;class Cube{public: void setL(int l) { c_L = l; } int getL() { return c_L; } void setH(int h) { c_H = h; } int getH() { ret原创 2020-08-05 18:01:58 · 216 阅读 · 0 评论 -
(C++)类与对象——封装
封装的基础与意义1.类的创建与调用#include "iostream"using namespace std;const double PI = 3.14;class Circle{public: //属性 int radius; //行为 double calculateZC() { return 2 * PI * radius; }};int main(){ //创建一个具体的圆 //实例化 Circle c1; c1.radius = 10; cou原创 2020-08-05 16:52:40 · 213 阅读 · 0 评论 -
(C++)函数高级
函数高级函数默认参数#include "iostream"using namespace std;int func(int a, int b = 20, int c = 30){ return a+b+c;}//1.如果某个位置已经有了默认参数,在这个参数之后都必须有默认参数int func2(int a, int b = 10, int c = 10){ return a+b+c;}//b有默认参数,则c也需要有默认参数//2.如果函数的声明有默认参数,函数实现就不能有默认参原创 2020-08-04 15:39:37 · 175 阅读 · 0 评论 -
(C++)C++中引用的基础知识以及应用
引用的基本概念引用的使用方式:&别名 = 原名使用引用修改数据等同于用原名修改,数据都会发生改变。注意:1.引用必须初始化int &b; 这是错误的2.引用初始化之后就不能改变引用做函数参数作用:函数传参时,可以利用引用的技术让形参修饰实参。优点:可以简化指针修改实参。#include "iostream"using namespace std;void mySwap01 (int a, int b){ int temp =a ; a = b; b =原创 2020-08-03 16:27:06 · 149 阅读 · 0 评论 -
(C++)程序运行前后的内存模型
程序的内存模型1.代码区(运行前)存放函数体的二进制代码,由操作系统进行管理。代码区是共享和只读的。共享:对于频繁执行的程序,只需要有一份代码即可只读:防止意外修改代码2.全局区(运行前)存放全局变量、静态变量以及常量。3.栈区(运行后)由编译器自动分配释放,存放函数的参数值,局部变量等。注意:不要返回局部变量的地址。#include "iostream"using namespace std;int * func(int b) //形参也会放在栈区{ b = 100;原创 2020-08-02 12:08:34 · 176 阅读 · 0 评论 -
(C++)结构体基础案例
结构体基础案例结构体案例1:创建老师以及学生结构体,3名老师结构体中包含5名学生的结构体数组,完成后输出老师以及学生的成绩信息。#include <string>//C++中使用字符串需要添加string头文件#include "iostream"using namespace std;struct Student{ string name; int age; int score;};//Student结构体要放在前面,放在后面会报错,不然就要先声明struct Te原创 2020-07-28 15:37:39 · 320 阅读 · 0 评论 -
(C++)结构体基础知识
结构体基本概念:结构体属于用户自定义的数据类型,允许用户储存不同的数据类型。1、结构体的定义和使用:#include <string>//C++中使用字符串需要添加string头文件#include "iostream"using namespace std;//1、创建学生数据类型,包括姓名年龄分数//struct 类型名称 { 成员列表 }struct Student{ string name; int age; int score;}wangwu; //创原创 2020-07-28 11:03:03 · 357 阅读 · 0 评论 -
(C++)函数、数组与指针结合基础示例
C++函数、数组与指针结合基础示例冒泡排序#include "iostream"using namespace std;void bubbleSort( int *arr,int len){ //冒泡排序 //详见笔记 for (int i = 0; i < len-1; i++) { for (int j = 0; j < len-i-1; j++) { if (arr[j] > arr[j+1]) { int temp = arr[j];原创 2020-07-26 16:59:48 · 175 阅读 · 0 评论 -
(C++)指针基础知识
指针指针的作用:可以通过指针间接访问内存。原创 2020-07-25 15:12:44 · 212 阅读 · 0 评论 -
(C++)函数的常见形式
各类函数以及其调用方法1. 无参数无返回值void test01(){ cout << "Hello test01" <<endl;}//调用方法test01();2. 有参数无返回值void test02(int a){ cout << "Hello test02" <<endl;}//调用方法test02(a);3. 无参数有返回值int test03(){ cout << "Hello test03"原创 2020-07-23 18:01:19 · 564 阅读 · 0 评论 -
(C++)数组初学笔记
数组一.定义数组#include "iostream"using namespace std;int main(){ // 一维数组定义的三种方式 int arr[5]; int arr1[] = { 1,2,3,4,5 }; int arr2[5] = { 1,2,3 }; // 输出数组数据时可以使用for循环 for (int i=0 ; i < 5 ; i++) { cout << arr1[i] << endl; } re原创 2020-07-23 15:00:19 · 134 阅读 · 0 评论 -
(C++)数组基础使用案例
一维数组的使用案例1 : 从X个数中找出最大值#include "iostream"using namespace std;int main(){ // 从X个元素中找出最大值 int arr[5] = { 555,233,325,513,466 }; int max = 0; for (int i =0; i < 5; i++ ) { if (arr[i] > max) max = arr[i]; } cout << max <<原创 2020-07-23 11:41:36 · 770 阅读 · 0 评论