
C++
文章平均质量分 84
袁百万
向梦想进发。热爱编程,永不放弃!
展开
-
中缀表达式转换为后缀表达式
【代码】中缀表达式转换为后缀表达式。原创 2023-10-15 20:59:24 · 282 阅读 · 0 评论 -
C++——类型转换
在代码里面,编译器会对const类型的变量进行优化,它默认为const类型的变量不会被改变。它访问这个变量的时候就会把这个变量放到寄存器里面去,用它的时候直接去寄存器里面取而不是去内存中取。但是内存中的值已经被修改了,但是寄存器中的值还是原来的值,因此打印的还是原来的值。因此C++提出了自己的类型转化风格,注意因为C++要兼容C语言,所以C++中还可以使用C语言的转化风格。vs是去内存中取,所以监视窗口中的内容是内存中的。然而通过p对a进行修改的时候修改的是内存中的值。原创 2023-06-07 19:06:57 · 648 阅读 · 4 评论 -
C++——特殊类设计
1、单例对象初始化时数据太多,导致启动慢,因为它在main函数之前就要初始化。2、多个单例类有初始化依赖关系,饿汉模式无法控制举例:A和B都是单例类,要求先初始化A,再初始化B,因为B会依赖A但是饿汉模式无法控制顺序。原创 2023-06-07 10:25:25 · 502 阅读 · 1 评论 -
C++——智能指针
管理的资源不是线程安全的,但是引用计数是线程安全的。原创 2023-06-05 08:49:47 · 496 阅读 · 3 评论 -
C++——异常
/ 服务器开发中通常使用的异常继承体系class Exception // 基类public:, _id(id){}protected:int _id;//数据库异常类 继承Exceptionpublic::Exception(errmsg, id)//调用父类的构造{}// 重写父类中的what成员方法return str;private://缓存异常类public:{}return str;原创 2023-06-03 21:01:56 · 385 阅读 · 0 评论 -
C++11
相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约600个缺陷的修正,这使得C++11更像是从C++98/03中孕育出的一种新语言。相比较而言,C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率,公司实际项目开发中也用得比较多,所以我们要作为一个重点去学习。原创 2023-04-23 21:43:18 · 476 阅读 · 0 评论 -
哈希——unordered系列关联式容器
/自定义类型会调用他的默认构造,内置类型不处理//结点的结构体里面存放一个指针:_kv(kv){}由于哈希表每个位置放的是一个哈希桶,因此结点中应该定义一个_next用来遍历每个哈希桶中的数据。原创 2023-04-16 21:34:18 · 465 阅读 · 0 评论 -
C++—— set、map、multiset、multimap
/构造空容器//拷贝构造set容器//使用迭代器拷贝某一段内容//比较方式指定为大于map是关联式容器,它按照特定的次序(按照key来比较)存储由键值key和值value组合而成的元素。在map中,键值key通常用于排序和唯一的标识元素,而值value中存储与此键值key关联的内容。键值key和值value的类型可能不同,并且在map的内部,key和value通过成员类型value_type绑定在一起,并为其取别名为pair:typedef pair value_type;原创 2023-03-31 19:57:18 · 340 阅读 · 0 评论 -
C++——多态
重载 重写 重定义虚函数是存放在哪儿的?cout原创 2023-03-28 17:11:54 · 398 阅读 · 1 评论 -
C++——模板的进阶
概念:从名字上我们就能发现“非类型”模板参数,肯定跟我们所熟知的模板参数是有一定的区别的。那么非类型:也就是舍弃了我们所熟知的T模板参数所替代的是一个常量。1、模板复用了代码,节省资源,更快的迭代开发,C++的标准模板库(STL)因此而产生。template后和类名后的给出一个特定的类型,另一个还给模板参数。template后给空,但类名后的给出特定的类型。2、出现模板编译错误时,错误信息非常凌乱,不易定位错误。优势在于:不仅实现了类型的可变而且大小也可以控制。2、增强了代码的灵活性。原创 2023-03-11 16:54:44 · 163 阅读 · 0 评论 -
C++——继承
顾名思义,继承的关系像一个菱形一样,如上图所示。原创 2023-03-11 20:17:37 · 800 阅读 · 4 评论 -
C++——优先级队列(priority_queue)的使用和模拟实现
priority_queue的使用priority_queue的使用简单介绍1. 优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。2. 此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元 素)。3. 优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。4.,也可以是其他特定设计的容器类。原创 2022-11-16 20:40:39 · 425 阅读 · 0 评论 -
C++——stack和queue的使用和OJ练习题
1、stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行 元素的插入与提取操作。2、 stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定 的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。empty:判空操作back:获取尾部元素操作push_back:尾部插入元素操作pop_back:尾部删除元素操作。原创 2022-11-08 18:55:02 · 619 阅读 · 1 评论 -
【万字总结】C++——list的基本使用和模拟实现(建议收藏)
1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向 其前一个元素和后一个元素。3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高 效。4. 与其他的序列式容器相比(array,vector,deque),list通常在任意位置进行插入、移除元素的执行效率 更好。原创 2022-11-01 23:23:57 · 1975 阅读 · 10 评论 -
迭代器失效问题及其解决方法
我们只要及时更新it指向的位置,就可以解决相关问题,避免迭代器失效。原创 2022-10-30 12:25:19 · 570 阅读 · 0 评论 -
C++——vector容器的基本使用和模拟实现
由上图可知vs下vector是以大约1.5增容的。而Linux下g++是以2倍增容的。原创 2022-10-29 22:07:53 · 1071 阅读 · 4 评论 -
C++——string的模拟实现(建议收藏)
模拟实现string原创 2022-10-19 17:39:08 · 701 阅读 · 0 评论 -
C++——string的简单使用与深浅拷贝的理解(建议收藏)
目录string的常用接口说明string类对象的常见构造string类对象的容量操作深浅拷贝 string类对象的访问及遍历操作三种遍历方式与迭代器的使用string类对象的修改操作尾部插入取出文件名的后缀扩容问题 头部插入与中间插入删除 比较 字符串与整型之间的互相转换相关OJ题目 string类对象的容量操作注意:拷贝构造我们运行以上代码可以发现程序发生错误这是什么原因造成的呢,我们画图来更直观的看一下。 赋值操作 同样我们运行上述代码会发现报错了 这原创 2022-10-16 10:08:25 · 2164 阅读 · 11 评论 -
C++模板初阶总结
(切记:不能使用struct代替class)原创 2022-10-08 15:51:55 · 166 阅读 · 2 评论 -
云顶之弈下累了 就来看看C/C++内存管理吧
;{// 申请单个Test类型的空间free(p1);// 申请10个Test类型的空间free(p2);}{// 申请单个Test类型的对象delete p1;// 申请10个Test类型的对象}调用Test1时:调用Test2时:在申请自定义类型的空间时,new会调用构造函数,delete会调用析构函数,而malloc与free不会。原创 2022-09-27 21:07:24 · 30273 阅读 · 33 评论 -
C++————类与对象<三>
1、初始化列表 - 成员变量定义的地方2、const、引用、没有默认构造函数的自定义类型成员变量必须在初始化列表初始化,他们必须在定义的时候初始化。3、对于像其他类型成员变量,如int year、int _month,在哪里初始化都可以4、成员变量在类中声明次序就是其在初始化列表中的初始化顺序,与其在初始化列表中的先后次序无关;我们这里用一个例题来看一下成员变量在初始化列表中的初始化顺序。原创 2022-09-27 07:33:46 · 1803 阅读 · 0 评论 -
C++————类与对象<二>(类的六个默认成员函数)
int _day;};//函数名 operator操作符//返回类型:看操作符运算后返回值是什么//参数:操作符有几个操作数,他就有几个参数{{}{}{}else{}}int main(){//默认情况下,C++是不支持自定义类型对象使用运算符d1 > d2;//编译器看到这个就会将其转换为operator>(d1,d2),就像函数调用一样。原创 2022-09-22 17:27:29 · 1836 阅读 · 3 评论 -
C++————类与对象<一>
// 类体:由成员函数和成员变量组成};// 一定要注意后面的分号class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号。类中的元素成为类的成员:类中的数据成为类的属性或者成员变量;类中的函数称为类的方法或者成员函数。int _day;{}{}};return 0;}C++...原创 2022-08-18 15:16:41 · 586 阅读 · 9 评论 -
打一局无火力不如看看——C++入门 < 二 >
目录引用引用概念引用特性常引用做参数做返回值注意引用和指针的区别auto关键字注意循环fornullptr的引入引用引用概念引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它引用的变量共用同一块内存空间。由图可见,引用仅仅是给一个变量起了一个别名,所以他们的地址相同的。引用特性1. 引用在定义时必须初始化2. 一个变量可以有多个引用3. 引用一旦引用一个实体,再不能引用..原创 2022-05-19 23:45:51 · 373 阅读 · 8 评论 -
C++入门篇 <一>
目录什么是C++命名空间命名空间的定义普通的命名空间命名空间的嵌套命名空间的合并输入与输出前言代码解析缺省参数缺省参数的分类全缺省参数半缺省参数注意函数重载函数重载的概念类型不同参数个数不同顺序不同注意用Linux来验证函数重载在C++下对函数名的修饰:在C语言下对函数名的修饰:总结什么是C++C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的程序,需要...原创 2022-05-17 19:22:32 · 889 阅读 · 23 评论 -
C++基础
普通大二学生的学习记录。原创 2021-12-01 21:11:55 · 792 阅读 · 5 评论