C++
文章平均质量分 83
C++学习之路
Hirty.
这个作者很懒,什么都没留下…
展开
-
C++进阶:C++11
在2003年C++标准委员会曾经提交了一份技术勘误表简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于C++03(TC1)主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。原创 2024-06-03 20:17:35 · 1040 阅读 · 0 评论 -
C++进阶:哈希表封装unordered_map和unordered_set(模拟实现)
基于my_unordered_map.h封装的哈希表类提供的接口,实现一个unordered_map。unordered_map的值是一个键值对。基于HashTable.h封装的哈希表类提供的接口,实现一个unordered_set类。该文件基本实现了unordered_set类。该文件基本实现了unordered_map类。原创 2024-06-03 19:02:35 · 339 阅读 · 0 评论 -
C++进阶:哈希
在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到log_2N,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordered系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是其底层结构不同,本文中只对和进行介绍,和可查看文档介绍。是存储键值对的关联式容器,其允许通过keys。原创 2024-06-03 17:53:57 · 644 阅读 · 0 评论 -
C++进阶:红黑树
/节点的颜色enumColorREDBLACK//红黑树节点的定义templateclassValueTypestructRBTreeNodeRBTreeNodeconstValueTypedataValueType()RED_pLeftnullptr),_pRightnullptr),_pParentnullptr_datadata),_colorcolor{}RBTreeNodeValueType>*_pLeft;//原创 2024-05-12 21:08:19 · 759 阅读 · 0 评论 -
C++进阶:AVL树
AVL树节点的定义:(三叉链)templateclassTstructconstTdata_leftnullptr),_rightnullptr),_parentnullptr_datadata),_bf0{}T>*_left;//该节点的左孩子T>*_right;//该节点的右孩子T>*_parent;//该节点的双亲T _data;int_bf;//该节点的平衡因子。原创 2024-05-05 21:32:06 · 677 阅读 · 0 评论 -
C++进阶:map和set
5.原创 2024-04-28 14:56:15 · 851 阅读 · 0 评论 -
C++进阶:二叉树进阶
二叉树在前面C数据结构阶段已经讲过,本节取名二叉树进阶是因为:1.先铺垫二叉搜索树,而二叉搜索树也是一种树形结构2.3.因此本节借二叉树搜索树,对二叉树部分进行收尾总结。,或者是具有以下性质的二叉树。原创 2024-04-28 11:03:34 · 402 阅读 · 0 评论 -
C++进阶:多态
多态的概念:通俗来说,就是多种形态,原创 2024-04-18 20:03:54 · 911 阅读 · 0 评论 -
C++进阶:继承
机制是面向对象程序设计。原创 2024-04-12 11:53:53 · 530 阅读 · 0 评论 -
C++初阶:反向迭代器
【代码】C++初阶:反向迭代器。原创 2024-04-11 19:50:23 · 208 阅读 · 0 评论 -
C++初阶:模板进阶
/ 只支持整形做非类型模板参数。定义一个模板类型的静态数组。// 模板支持缺省参数。原创 2024-04-11 12:31:27 · 214 阅读 · 0 评论 -
C++初阶:stack和queue使用及模拟实现
设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结)原创 2024-04-05 13:37:23 · 1116 阅读 · 0 评论 -
C++初阶:list类及模拟实现
1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3. list与非常相似:最主要的不同在于是单链表,只能朝前迭代,已让其更简单高效。4.与其他的序列式容器相比(arrayvectordeque)list通常在任意位置进行插入、移除元素的执行效率更好。5.与其他序列式容器相比,list和。原创 2024-04-02 10:15:57 · 591 阅读 · 0 评论 -
C++初阶:模拟实现vector类
既高效又不会出错,但如果拷贝的是自定义类型元素,并且自定义类型元素中涉及到资源管理时,就会出错,因为memcpy。是内存的二进制格式拷贝,将一段内存空间中内容原封不动的拷贝到另外一段内存空间中。构建动态二维数组时与上图实际是一致的。实现代码+测试样例:vector.h。进行的拷贝,以下代码会发生什么问题?类型的,每行没有包含任何元素,如果n。如果拷贝的是自定义类型的元素,实现代码:vector.h。的拷贝实际是浅拷贝。个元素,每个元素都是。原创 2024-03-29 19:57:20 · 447 阅读 · 0 评论 -
C++初阶:vector类
就时间而言,这是一个相对代价高的任务,因为每当一个新的元素加入到容器的时候,vector。会分配一些额外的空间以适应可能的增长,因为存储空间比实际需要的存储空间更大。不同的库采用不同的策略权衡空间的使用和重新分配。但是无论如何,重新分配都应该是对数增长的间隔大小,以至于在末尾插入一个元素的时候是在常数时间的复杂度完成的。的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理。占用了更多的存储空间,为了获得管理存储空间的能力,并且以一种有效的方式动态增长。原创 2024-03-20 12:48:14 · 339 阅读 · 1 评论 -
C++初阶:模拟实现string类
【代码】C++初阶:模拟实现string类。原创 2024-03-19 22:02:33 · 242 阅读 · 1 评论 -
C++初阶:string类
类的形式出现,而且在常规工作中,为了简单、方便、快捷,基本都使用string。系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP。结尾的一些字符的集合,为了操作方便,己管理,稍不留神可能还会越界访问。的思想,而且底层空间需要用户自。中,有关字符串的题目基本以。库中的字符串操作函数。原创 2024-03-16 12:11:03 · 466 阅读 · 1 评论 -
C++初阶:模板初阶+STL简介
大家都知道,瓦特改良蒸汽机,人类开始了工业革命,解放了生产力。本质是什么,重复的工作交给了机器去完成。有人给出了论调:懒人创造世界。重载的函数仅仅是类型不同,代码复用率比较低,只要有新类型出现时,就需要用户自己增加对应的函数。如果类型不匹配,编译器会尝试进行隐式类型转换,如果无法转换成功编译器将会报错。,那将会节省许多头发。巧的是前人早已将树栽好,我们只需在此乘凉。代码的可维护性比较低,一个出错可能所有的重载均出错。如何实现一个通用的交换函数呢?,对于字符类型也是如此。,对于模板函数的使用,原创 2024-03-15 22:17:39 · 408 阅读 · 1 评论 -
C++初阶:C/C++内存管理
strlen是一个函数,用于计算以 null 结尾的字符串的长度(不包括 null 终止符)。- sizeof是一个运算符,而不是函数,用于计算数据类型或变量所占用的内存字节数。- sizeof在编译时求值,不会执行运行时计算,因此在编译时就能确定结果。- strlen主要用于获取以 null 结尾的字符串的长度,在运行时计算。- strlen 是在运行时执行的,需要遍历整个字符串来计算长度。- sizeof主要用于获取数据类型或变量的字节大小,在编译时确定。映射方式,用于装载一个共享的动态内存库。原创 2024-03-15 17:17:09 · 884 阅读 · 1 评论 -
C++初阶:类和对象(下)
虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称为对对象中成员变量。尽量使用初始化列表初始化,因为不管你是否使用初始化列表,对于自定义类型成员变量,在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。非静态成员函数可以调用类的静态成员函数吗?静态成员函数可以调用非静态成员函数吗?,不属于某个具体的对象,存放在静态区。构造函数不仅可以构造与初始化对象,,与其在初始化列表中的先后。每个成员变量在初始化列表中。静态成员也是类的成员,受。就是其在初始化列表中的。原创 2024-03-14 20:23:26 · 449 阅读 · 1 评论 -
C++初阶:类和对象(中)
class Dateprivate:// 基本类型(内置类型)// 自定义类型Time _t;return 0;// 程序运行结束后输出:~Time()6.如果类中没有申请资源时,析构函数可以不写,直接使用编译器生成的默认析构函数,比如Date类;有资源申请时,一定要写,否则会造成资源泄漏,比如Stack类。class Date。原创 2024-03-12 22:39:39 · 983 阅读 · 1 评论 -
C++初阶:类和对象(上)
分析出求解问题的步骤,通过函数调用逐步解决问题。,将一件事情拆分成不同的对象,靠对象之间的交互完。,当对象调用成员函数时,将对象地址作为实参传递给。声明和定义全部放在类体中,需注意:成员函数如果。如果后面没有访问限定符,作用域就到。修饰的成员在类外可以直接被访问。修饰的成员在类外不能直接被访问。一个类可以实例化出多个对象,文件中,成员函数定义放在。,编译器可能会将其当成。,即成员函数中,不能给。语言中实现封装,可以。原创 2024-02-18 18:49:31 · 863 阅读 · 1 评论 -
C++初阶:针对C语言的优化
2.一个变量可以有多个引用3.引用一旦引用一个实体,再不能引用其他实体。原创 2024-02-17 18:04:30 · 960 阅读 · 1 评论