C++
文章平均质量分 94
爱生活,爱代码
天行健,君子以自强不息
展开
-
C++ 类型转换
类型转换原创 2022-06-05 22:33:01 · 136 阅读 · 1 评论 -
C++智能指针
智能指针原创 2022-06-04 20:01:35 · 1277 阅读 · 5 评论 -
C++异常
异常原创 2022-06-02 21:17:21 · 183 阅读 · 3 评论 -
C++线程库
C++线程库原创 2022-06-02 14:07:36 · 722 阅读 · 3 评论 -
C++11新特性 + 语法糖
目录C++11简介列表初始化std::initializer_list变量类型推导decltype类型推导右值引用左右与右值概念区分左值右值总结:右值引用的使用场景C++11简介在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于TC1主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年.原创 2022-02-07 16:15:05 · 1907 阅读 · 3 评论 -
C++特殊类设计 -单例设计模式
目录特殊类设计只能在堆上创建对象的类请设计一个类,只能在栈上创建对象请设计一个类,不能被拷贝请设计一个类,不能被继承请设计一个类,只能创建一个对象(单例模式)懒汉模式和饿汉模式的对比特殊类设计只能在堆上创建对象的类请设计一个类,只能在堆上创建对象实现方式:将类的构造函数私有,拷贝构造声明成私有。防止别人调用拷贝在栈上生成对象。提供一个静态的成员函数,在该静态成员函数中完成堆对象的创建class test {public: static test* GetObj() { re.原创 2022-01-27 18:26:12 · 1271 阅读 · 4 评论 -
哈希表和哈希桶模拟实现、封装unordered_map、unordered_set
目录unordered系列关联式容器unordered_map的文档介绍unordered_map的接口说明unordered系列关联式容器在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到 ,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同,本文中只.原创 2022-01-26 09:26:03 · 833 阅读 · 0 评论 -
C++入门 - 内存管理
目录内存布局介绍动态内存分配内存布局介绍栈又叫堆栈,非静态局部变量/函数参数/返回值等等,栈是向下增长的。内存映射段是高效的I/O映射方式,用于装载一个共享的动态内存库。用户可使用系统接口创建共享共享内存,做进程间通信。堆用于程序运行时动态内存分配,堆是可以上增长的。数据段–存储全局数据和静态数据。代码段–可执行的代码/只读常量/程序编译出来的指令const变量不是定义在常量区的,const是一个常变量但还是一个变量,如果是在栈上定义的就是一个局部变量,如果是在全局定义的就是一个全局变.原创 2022-01-20 14:34:44 · 318 阅读 · 0 评论 -
C++实现红黑树
目录红黑树的概念红黑树的性质红黑树的定义与树结构插入旋转验证删除红黑树与AVl树的比较红黑树的应用红黑树的概念红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路径会比其他路径长出俩倍,因而是接近平衡的概念总结:红黑树是二叉搜索树的升级,结点里面存放的成员col标记当前结点的颜色,它的最长路径最多是最短路径的二倍,红黑树通过各个结点着色方式的限制接近平衡二叉树,但是不同于AV.原创 2022-01-12 13:32:31 · 914 阅读 · 2 评论 -
C++实现AVL树
目录AVL树的概念AVL树的插入AVL树的四种旋转右单旋左单旋左右双旋右左双旋查找其他接口析构函数拷贝构造拷贝赋值AVL树的概念二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年发明了一种解决上述问题的方法:当向二叉搜索树中插入新结点后,如果能保证每个结点的左右子树高度之差的绝对值不超过1(需要对树中的结点进行调整),即可降低树的高.原创 2022-01-03 10:22:05 · 2145 阅读 · 13 评论 -
C++入门关联式容器【map和set基本使用】
目录关联式容器键值对set文档介绍set的模板参数列表set的使用set的构造set的迭代器set的容量set修改操作multisetmap的介绍map的模板参数说明关联式容器我们已经接触过STL中的部分容器,比如:vector、list、deque、这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key, value>结构的键值对,在数据检索时比序列式容器效率更高总结:1、容器本身底层.原创 2021-12-28 11:26:50 · 241 阅读 · 4 评论 -
二叉搜索树
二叉搜索树二叉搜索树概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树插入//增删查改bool insert(const T& val){ Node* node = new Node(val); if (!_root) { _root = node; } else { Node*.原创 2021-12-20 08:22:34 · 3699 阅读 · 9 评论 -
C++类和对象多态
目录多态的概念多态的定义及实现多态的构成条件虚函数虚函数的重写虚函数重写的两个例外多态的概念多态的概念:通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。静态的多态 :函数重载,在编译期间就已经确定好了函数的调用关系namespace mzt { //函数名相同参数不同构成重载, void add(int left, int right) { cout << "add(int left, int right)" << endl;.原创 2021-12-14 11:00:31 · 748 阅读 · 21 评论 -
C++类和对象继承
目录继承的概念及定义继承的概念及定义继承的概念继承(inheritance)机制是面向对象程序设计使代码可以复用的最重要的手段,它允许程序员在保持原有类特性的基础上进行扩展,增加功能,这样产生新的类,称派生类。继承呈现了面向对象程序设计的层次结构,体现了由简单到复杂的认知过程。以前我们接触的复用都是函数复用,继承是类设计层次的复用。namespace mzt { //将一致的信息单独提取出来,提高程序的复用性 class Person { public: string _name;.原创 2021-12-07 10:46:53 · 1406 阅读 · 30 评论 -
C++入门泛型编程介绍
目录函数模板函数模板格式函数模板的实例化补充:类模板类模板的定义格式类模板的实例化泛型编程:编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础函数模板函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参类型产生函数的特定类型版本。函数模板格式template<typename T1, typename T2,......,typename Tn>返回值类型 函数名(参数列表){}用不同类型的参数使用函数模板时,称为函数模板的实例.原创 2021-12-06 08:10:53 · 9097 阅读 · 43 评论 -
C++入门stack和queue适配器介绍+ priority_queue的模拟实现【仿函数基本概念提及】
目录stack介绍stack介绍stack是一种容器适配器,专门用在具有后进先出操作的上下文环境中,其删除只能从容器的一端进行元素的插入与提取操作。stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素,将特定类作为其底层的,元素特定容器的尾部(即栈顶)被压入和弹出。stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支持以下操作:empty:判空操作back:获取尾部元素操作pus.原创 2021-11-29 08:14:10 · 555 阅读 · 8 评论 -
C++入门List类使用介绍 + 进阶【模拟实现】
目录常用接口函数介绍构造函数迭代器常用的操作函数front和backpush_front 和 pop_frontpush_back 和 pop_backinsert 和 erase迭代器失效问题探讨常用接口函数介绍构造函数构造函数接口说明list()构造空的listlist (size_type n, const value_type& val = value_type())构造的list中包含n个值为val的元素list (const list&.原创 2021-11-22 08:10:42 · 700 阅读 · 21 评论 -
C++入门 vector的使用 + 进阶【模拟实现】
基本接口函数介绍构造函数函数名功能vector()(重点)无参构造,构造一个空容器,没有元素。vector(size_type n, const value_type& val = value_type())构造并初始化n个valvector (const vector& x); (重点)拷贝构造vector (InputIterator first, InputIterator last);使用迭代器进行初始化构造测试:void .原创 2021-11-17 08:57:25 · 3254 阅读 · 38 评论 -
C++入门string类常用接口函数介绍 + 进阶【模拟实现string接口函数】
目录string类对象的常见构造string类对象的访问及遍历操作string类对象的常见构造介绍常用的几个string接口函数,如果需要学习更多的请参考官方文档: string构造函数.函数名称功能说明string() (重点)构造空的string类对象,即空字符串string(const char* s) (重点)用C-string来构造string类对象string(size_t n, char c)string类对象中包含n个字符cstring(c.原创 2021-11-11 11:35:44 · 1758 阅读 · 18 评论 -
C++类和对象一站式总结【日期类的实现】附源码【收藏】
目录面向过程和面向对象初步认识类的定义C++类型定义的两种方式类的访问限定符C++中struct和class的区别是什么?类的基本概念面向对象的三大特性:封装、继承、多态类的作用域类的实例化重点:this指针总结及补充:进一步加强对this的理解类的6个默认成员函数面向过程和面向对象初步认识面向对象程序设计以对象为核心,该方法认为程序由一系列对象组成。 类是对现实世界的抽象,包括表示静态属性的数据和对数据的操作,对象是类的实例化。 对象间通过消息传递相互通信,来模拟现实世界中不同实体间的联系。 在面向.原创 2021-11-03 07:33:18 · 1176 阅读 · 29 评论 -
C++入门-- 一篇带你扫清前期琐碎语法知识,快速入门,效率直线拉升
目录C++关键字(C++98)命名空间命名空间定义:命名空间嵌套using namespace stdC++关键字(C++98)C++总计63个关键字,C语言32个关键字命名空间在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字 污染,namespace关键字的出现就是针对这种问题的。命名空间定义:定义命名空间,需要使用到namespace关键字,后.原创 2021-10-26 15:13:10 · 1975 阅读 · 31 评论