c++学习笔记
文章平均质量分 50
目标成为slam大神
这个作者很懒,什么都没留下…
展开
-
c++---vector二维数组
1、创建二维数组:2、获取数组长度:3、赋值操作4、增加操作根据需求,增加操作可分为增加行和增加列。增加行列元素,可以使用vector提供的方法push_back()或insert()。对于增行,可以使用asd1.push_back(asd);,其中asd是vector。对于增加列中的元素,需要指定插入的行,可以使用asd1[0].push_back(23);完成插入操作。使用insert()时,需要使用迭代器才能完成在相应位置的插入操作。5、删除操作删除同样分为删除行和删...原创 2022-06-18 11:30:32 · 15043 阅读 · 0 评论 -
c++---优先队列(priority_queue)
C ++中的优先队列是STL中的派生容器,它仅考虑最高优先级元素。队列遵循FIFO策略,而优先队列根据优先级弹出元素,即,优先级最高的元素首先弹出。与普通队列区别: 在优先队列中,队列中的每个元素都与某个优先级相关联,但是优先级在队列数据结构中不存在。 优先队列中具有最高优先级的元素将被首先删除,而队列遵循FIFO(先进先出)策略,这意味着先插入的元素将被首先删除。 如果存在多个具有相同优先级的元素,则将考虑该元素在队列中的顺序。 语法:priority_queue&原创 2022-05-11 16:05:19 · 8005 阅读 · 0 评论 -
c++ ----to_string、stoi()、atoi()
1、to_string包含在# include<string>。作用是把数值类型如int、double、long等转化为string,int a = 4;double b = 3.14;string str1, str2;str1 = to_string(a);str2 = to_string(b);cout << str1 << endl;cout << str2 << endl;2、stoi和atoi ...原创 2022-05-10 11:28:46 · 1288 阅读 · 0 评论 -
c++---queue用法
queueC++队列⽤法详解⼀、定义queue是⼀种容器转换器模板,调⽤#include< queue>即可使⽤队列类。⼀、queue初始化queue<Type, Container> (<数据类型,容器类型>)初始化时必须要有数据类型,容器可省略,省略时则默认为deque 类型初始化⽰例queue<int>q1;queue<double>q2;queue<char>q3;queue<char, list<..原创 2022-05-09 11:28:26 · 910 阅读 · 0 评论 -
c++---STL常用算法
概述:算法主要是由头文件<algorithm><functional><numeric>组成 <algorithm>是所有stl头文件中最大的一个,涉及比较,交换,查找,遍历,复制,修改等操作 <numeric>体积很小,只包括几个在序列上进行简单数学运算的模板函数 <functional>定义了一些类模板,用以声明函数对象一、常用遍历算法for_each 遍历容器 transform 搬运容...原创 2022-04-25 15:05:42 · 3245 阅读 · 2 评论 -
c++---STL函数对象
一、函数对象1.1函数对象概念概念:重载函数调用操作符的类,其对象通常称为函数对象 函数对象使用重载的()时,行为类似函数调用,也叫仿函数本质:函数对象(仿函数)是一个类,不是一个函数1.2函数对象使用特点:函数对象在使用时,可以像普通函数那样调用,可以有参数,可以有返回值 函数对象超出普通函数的概念,函数对象可以有自己的状态 函数对象可以作为参数传递#include <iostream>#include <string>#include &l原创 2022-04-22 16:30:53 · 715 阅读 · 0 评论 -
c++---map/multimap容器
1.map基本概念简介:map中所有元素都是pair pair中的第一个元素为key(键值),起到索引作用,第二个元素为value(实值) 所有元素都会根据元素的键值自动排序本质:map/multimap属于关联式容器,底层结构是用二叉树实现优点:可以根据key值快速找到value值map和multimap的区别map不允许容器中有重复key元素 multimap允许有重复key元素2、map构造和赋值函数原型:map<T1,T2> mp;map默认构造原创 2022-04-22 15:23:30 · 1193 阅读 · 0 评论 -
c++---set/multiset容器
1、set基本概念简介:所以元素在插入时被自动排序本质:set、multiset属于关联式容器,底层结构用的是二叉树实现set和multiset区别:set不允许容器中有重复的元素 multiset允许容器中有重复元素2、set构造与赋值函数原型:set<T> st;默认构造函数 set(const set &st);拷贝构造函数 set& operator=(const set &st);重载等号操作符#include <ios原创 2022-04-22 09:42:57 · 584 阅读 · 0 评论 -
c++---list容器
1、list基本概念功能:将数据进行链式存储链表是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链表中的指针链接实现的链表的组成:链表由一系列结点组成结点的组成:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域链表的优点:可以对任意的位置进行快速插入或删除元素,修改指针即可,不需要移动大量元素 采用动态存储分配,不会造成内存的浪费和溢出缺点:容器遍历速度没有数组快,占用空间 比 数组 大STL中的链表是一个双向循环链表list有一个重要性原创 2022-04-21 18:11:03 · 526 阅读 · 0 评论 -
c++---deque容器
1、deque容器基本概念功能:双端数组,可以对头端进行插入删除操作deque和vector的区别vector对于头部的插入删除效率低,数据量越大,效率越低 deque相对而言,对头部的插入删除速度会比vector快 vector访问元素时的速度会比deque快,和两者的内部实现有关2、deque构造函数函数原型:deque<T> deqT;默认构造函数 deque(beg,end);构造函数将beg,end区间中的元素拷贝给本身 deque(n,elem.原创 2022-04-21 15:50:13 · 598 阅读 · 0 评论 -
c++---stack容器
1、stack基本概念stack是一种先进后出的数据结构,他只有一个出口栈中进入的数据叫---入栈push栈中弹出的数据叫---出栈pop例如,弹匣2、stack常用接口构造函数:stack<T> stk;采用模板类实现,stack对象的默认构造形式 stack(const stack &stk);拷贝构造函数赋值操作:stack& operator=(const stack &stk);重载等号运算符数据存取:push(el原创 2022-04-21 15:50:23 · 678 阅读 · 0 评论 -
c++---vector容器
1、vector基本概念功能:vector数据结构和数组非常相似,也称为单端数组vector与普通数组区别:不同之处在于数组是静态空间,而vector可以动态扩展动态扩展:并不是在原有的空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间。vector迭代器是支持随机访问的迭代器2、vector构造函数功能:创建vector容器函数原型:vector<T> v; 采用模板实现类实现,默认构造函数 vector(v.begin(原创 2022-04-21 09:53:37 · 642 阅读 · 0 评论 -
c++ stl---string容器
1、string基本概念本质:string是c++风格的字符串,而string本质上是一个类string和char*的区别:char*是一个指针 string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。特点:string类内部封装了很多成员方法:如find查找,copy拷贝,replace替换,insert插入 string管理char*所分配的内容,不用担心赋值越界和取值越界等,有类内部进行负责2、string构造函数构造函数原型strin原创 2022-04-20 11:40:04 · 111 阅读 · 0 评论 -
c++---stl
1、stl基本概念STL标准模板库 STL从广义上分为:容器(container)算法(algorithm)迭代器(iterator) 容器和算法之间通过迭代器进行无缝连接 STL几乎所有的代码都采用了模板类或模板函数2、STL六大组件六大组件分为:容器、算法、迭代器、仿函数、适配器(配接器)、空间配置器容器:各种数据结构,如vector、list、deque、set、map等,用来存放数据 算法:各种常用的算法,如sort、find、copy、for_each等 迭代器:扮演了容器原创 2022-04-20 09:23:48 · 105 阅读 · 0 评论 -
c++提高编程---类模板
1、类模板语法类模板作用:建立一个通用类,类中的成员 数据类型可以不具体制定,用一个虚拟的类型来代表template<typename T>类解释:template :声明创建模板typename :表明其后面是一种数据类型,可以用class代替T:通用的数据类型,名称可以替换,通常大写字母//类模板template<class NameT, class AgeT>class person{public: NameT m_name;原创 2022-04-19 16:48:43 · 689 阅读 · 0 评论 -
c++提高---模板
1、模板1.1模板的概念模板就是建立通用的工具,大大提高复用性特点:模板不可以直接使用,只是一个框架模板的通用性并不是万能的1.2函数模板c++另一种编程思想称为泛型编程,主要利用的技术就是模板 c++提供两种模板机制:函数模板和类模板函数模板作用:建立一个通用函数,其函数返回值类型和形参类型可以不具体制定,用一个虚拟的类型来代表语法:template<typename T>函数声明或定义解释:template---声明创造模板typen原创 2022-04-19 08:52:38 · 68 阅读 · 0 评论 -
c++核心编程---文件操作
程序运行时产生的数据都属于临时数据,程序一旦运行结束都会被修改通过文件可以让数据持久化c++中对文件的操作需要包含头文件<fstream>文件类型分为两种:1、文本文件,文件以文本的ASC||的形式储存在计算机中2、二进制文件,文件以文本的二进制存储在计算机中,用户一般不能直接读懂他们操作文件的三大类:1、ofstream:写操作2、ifstream:读操作3、fstream:读写操作1、文本文件1.1写文件包含头文件:#include<fs原创 2022-04-17 10:43:58 · 77 阅读 · 0 评论 -
c++类和对象---多态
1、多态的基本概念多态是c++面向对象的三大特性之一多态分为两类:1、静态多态:函数重载和运算符重载属于静态多态,复用函数名2、动态多态:派生类和虚函数实现运行时多态静态多态和动态多态的区别1、静态多态的函数地址早绑定 - 编译阶段确定函数地址2、动态多态的函数地址晚绑定 - 运行阶段确定函数地址动态多态满足条件:1、有继承关系2、子类重写父类虚函数(完全相同)动态多态使用父类指针或者引用,指向子类对象class animal{public: vi原创 2022-04-17 09:30:52 · 140 阅读 · 0 评论 -
c++类和对象---继承
继承是面向对象三大特性之一1、继承的基本语法语法:class 子类名 :继承方式 父类名子类 也叫 派生类父类 也叫 基类class basepage{public: void header() { cout << "首页,公开课、登录、注册..." << endl; } void footer() { cout << "帮助、交流、地图..." << endl; } void left() { cou原创 2022-04-15 16:18:25 · 636 阅读 · 0 评论 -
c++类和对象---运算符重载
概念:对已有的运算符进行重新定义,赋予其另一种功能,以适应不同的数据类型1、加号运算符重载class person{public: //成员函数重载+号 /*person operator+(person &p) { person temp; temp.m_A = this->m_A + p.m_A; temp.m_B = this->m_B + p.m_B; return temp; }*/ int m_A; int m_B;};//全局原创 2022-04-15 10:18:56 · 117 阅读 · 0 评论 -
c++类和对象---友元
在程序里,有些私有属性,也想让类外的特殊的函数或者类进行访问,需要用 “友元”友元的目的就是让一个函数或着类访问另一个类中的私有成员友元的关键字:friend友元的三种实现:全局函数做友元 类做友元 成员函数做友元//全局函数做 友元class building{ friend void goodGay(building *build);//goodGay全局函数是building的好朋友,可以访问私有成员public: string m_sittingRoom;pr原创 2022-04-14 11:29:41 · 592 阅读 · 0 评论 -
c++类和对象---c++对象模型和this指针
1、成员变量和成员函数分开储存在c++中,类内成员变量和成员函数分开储存,只有非静态成员变量才属于类的对象上class person{public: int m_A;//非静态成员变量,属于类的对象,占用四个字节内存 static int m_B;//静态成员变量,不属于类的对象上 void func(){}//非静态成员函数,不属于类的对象上 static void func1() {}//静态成员函数,不属于类的对象上private: };int person::m_B原创 2022-04-14 10:45:22 · 403 阅读 · 0 评论 -
c++类和对象---对象的初始化和清理
1、构造函数和析构函数对象的初始化和清理是非常重要的安全问题c++利用了构造函数和析构函数解决上述问题,这个函数编译器自动调用。如果程序员没有提供构造和析构函数,编译器会提供默认的构造和析构函数,都是空实现。构造函数:主要作用在于创建对象时为对象的成员属性赋值,构造函数由编译器自动调用,无需手动调用 析构函数:主要作用在于对象销毁前系统自行调用,执行一些清理工作构造函数语法:类名(){}构造函数,没有返回值也不写void 函数名称和类名相同 构造函数可以有参数,因此可以发送重载 程原创 2022-04-14 09:37:48 · 462 阅读 · 0 评论 -
c++---类和对象---封装
c++面对对象的三大特性:封装,继承,多态c++认为万事万物皆为对象,对象上有其属性和行为1、封装意义:将属性和行为作为一个整体,表现生活中的事物 将属性和行为加以权限控制语法:class 类名{访问权限:属性/行为};//设计一个圆类,计算其周长class Circle{ //访问权限public: int m_r; double calculate() { return 2 * 3.14 * m_r; }};int main(){ Circle原创 2022-04-12 21:16:34 · 251 阅读 · 0 评论 -
c++核心编程---函数提高篇
1、函数的默认参数在c++中,函数的形参列表中的形参是可以由默认值的语法:返回值类型 函数名(参数 = 默认值){}//函数默认参数//如果自己传入参数,就用自己的数据,如果没有传入参数,就用默认参数//!!!!如果某个位置有了默认参数,那么他后边的参数都必须有默认参数//!!!!如果函数的声明有默认参数,那么函数实现不能有默认参数void func(int a, int b, int c = 0){ cout << a + b + c << endl;原创 2022-04-11 21:01:08 · 380 阅读 · 0 评论 -
c++核心编程---引用
1、引用 作用:给变量起别名语法:数据类型 &别名 = 原名;int main(){ //引用的基本语法 //数据类型 &别名 = 原名 int a = 10; int &b = a; cout << "a=" << a << endl; cout << "b=" << b << endl; b = 100; cout << "a=" << a <原创 2022-04-11 20:16:46 · 47 阅读 · 0 评论 -
c++核心编程---内存分区模型
1、内存分区模型c++程序在执行时,将内存大方向划分为4个区域代码区:存放函数体的二进制代码,由操作系统进行管理的 全局区:存放全局变量和静态变量以及常量 栈区:由编译器自动分配释放,存放函数的参数值,局部变量等 堆区:由程序员分配和释放,若程序员不释放,程序结束时由操作系统回收内存四区的意义:不同区域存放的数据,赋予不同的生命周期,给我们更大的灵活编程。1.1 程序运行前在程序编译后,生成了exe可执行程序,未执行该程序前分为两个区域代码区:存放cpu执行的机器指令。原创 2022-04-11 18:38:07 · 683 阅读 · 0 评论 -
c++---结构体
结构体属于用户自定义的数据类型,允许用户存储不同的数据类型语法:struct 结构体名 {结构体成员列表};通过结构体创建变量的方式有三种:1、struct 结构体名 变量名2、struct 结构体名 变量名 = {成员值1,成员值2....}3、定义结构体时顺便创建变量#include <iostream>#include <string>#include <vector>#include <ctime>using name原创 2022-04-09 20:57:59 · 1948 阅读 · 0 评论 -
c++---指针
作用:用指针来间接访问内存int main(){ //定义指针 int a = 10; //指针语法:数据类型 * 变量名 int *p; //让指针记录变量a的地址 p = &a; cout << &a << endl; cout << p << endl; //使用指针 //通过解引用的方式找到指针指向的内存 //指针前加*代表解引用,找到指针指向的内存中的数据 *p = 1000; cout <&原创 2022-04-08 20:08:46 · 391 阅读 · 0 评论 -
c++---函数
一、函数作用:将一段经常使用的代码封装起来,减少重复代码一个较大的程序,一般分为若干个程序块,每个模块实现特定的功能定义:函数的定义一般有5个步骤:1、返回值类型:一个函数可以返回一个值,在函数定义中2、函数名:给函数起个名字3、参数列表:使用函数时,传入的参数4、函数体语句:花括号内的代码,函数内需要执行的语句5、return表达式:和返回值类型挂钩,函数执行完后,返回相应的数据//加法函数int add(int a, int b) //返回值类型 函数原创 2022-04-07 21:59:01 · 220 阅读 · 0 评论 -
c++---数组
概念:一个集合,里面存放了相同类型的数据元素特点:1.数组中的每个数据元素都是相同的数据类型2.数组是由连续的内存位置组成的一.一维数组1. 一维数组定义三种方式: 1、数据类型 数组名[数组长度];2、数据类型 数组名[数组长度] = {值1,值2,...};3、数据类型 数组名[] = {值1,值2,...};int main(){ //初始化数组没有填写数据,会用0来填补数据 i...原创 2022-04-07 20:18:50 · 3073 阅读 · 0 评论 -
continue语句,goto语句
continue:作用:在循环语句中,跳过本次循环中余下还未执行的语句,继续执行下一次循环int main(){ //continue语句 //奇数输出,偶数不输出 for (int i = 0; i < 100; i++) { if (i % 2 == 0) { continue; } cout << i << endl; } return 0;}goto:一般不使用遇到goto语句后,程序会跳过goto和标记之间的程序,跳原创 2022-04-07 18:29:36 · 125 阅读 · 0 评论 -
break语句
作用:用于跳出选择结构或者循环结构使用于三种情况:出现在switch语句中用于终止case并跳出switch 出现在循环语句中,用于跳出当前的循环语句 出现在嵌套循环中,用于跳出最近的内层循环...原创 2022-04-06 22:18:03 · 47 阅读 · 0 评论 -
c++----嵌套循环
在循环体中再嵌套一个循环;int main(){ for (int j = 0; j < 10; j++) { for (int i = 0; i < 10; i++) { cout << "* "; } cout << endl; } return 0;}打印乘法口诀表int main(){ for (int j = 1; j < 10; j++) { for (int i = 1; i <= .原创 2022-04-06 22:11:19 · 484 阅读 · 0 评论 -
c++----for循环语句
语法:for(起始表达式; 条件表达式;末尾循环体){循环语句;}语句执行步骤:1、起始表达式2、条件表达式3、末尾循环体4、循环语句1-2-4-3-2-4-3-2-4-3-2-4-3.....-2退出int main(){ for (int i = 0; i < 10; i++) { cout << i << endl; } return 0;}int main(){ //喝酒敲桌子案例,7的倍数,个位十位有7,输出敲桌原创 2022-04-06 21:49:46 · 502 阅读 · 0 评论 -
c++----循环结构
while循环语句语法:while(循环条件) {循环语句}解释:只要条件为真,就一直执行循环语句。!!!避免死循环出现#include <iostream>#include <string>#include <vector>using namespace std;int main(){ //while循环 //在屏幕中打印0~9这10个数字 int a = 0; while (a < 10) { cout <<原创 2022-04-06 21:30:18 · 371 阅读 · 0 评论 -
c++----switch语句
执行多条件分支语句#include <iostream>#include <string>#include <vector>using namespace std;int main(){ //switch语句 //给电影打分 cout << "请给电影打分" << endl; int score = 0; cin >> score; cout << "你打的分数为" << score原创 2022-04-06 20:30:50 · 77 阅读 · 0 评论 -
c++----三目运算符
语法:表达式1 ?表达式2 :表达式3如果表达式1为真,执行表达式2,并且返回表达式2 的结果如果表达式1为假,执行表达式3,并且返回表达式3的结果#include <iostream>#include <string>#include <vector>using namespace std;int main(){ //三目运算符 //将a和b比较,将变量大的值付给c int a, b; int c = 0; cout <<原创 2022-04-06 20:00:22 · 336 阅读 · 0 评论 -
c++----程序流程结构
c++支持的三种基本程序运行结构:顺序结构、选择结构、循环结构顺序结构:程序按照顺序执行,不发生跳转选择结构:依据条件是否满足,有选择的执行相应功能循环结构:依据条件是否满足,循环多次执行某段代码1.if语句if语句的三种形式1、单行if语句#include <iostream>#include <string>#include <vector>using namespace std;int main(){ //选择结构,单行.原创 2022-04-06 19:49:40 · 182 阅读 · 0 评论 -
赋值运算符的使用
= += -= *= /= %=#include <iostream>#include <string>using namespace std;#define day = 7int main(){ //赋值运算符 // = int a = 10; a = 100; cout << "a=" << a << endl; // += a = 10; a += 2; cout << "a=" <&l原创 2022-04-05 17:48:00 · 91 阅读 · 0 评论