c++语法与STL库
文章平均质量分 93
敲上瘾
热爱生活,热爱学习,热爱世界
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
C++类型转换详解
c++中支持内置类型转自定义类型,只需要提供相应的构造函数,就可以想怎么转就怎么转,全在于你的构造函数怎么实现。int b;A a1 = v;//int类型隐式转化为A类型fun(6);return 0;A a1 = v:调用构造函数产生临时对象,然后调用拷贝赋值。逻辑上是这样,但实际上会被编译器优化。原创 2025-04-07 07:46:33 · 1269 阅读 · 61 评论 -
动静态库的制作与使用(Linux操作系统)
首先准备好需要做成库的源文件与头文件,如下示例:注意:在制作库方法过程中不能有main函数。如果代码使用c语言进行写的,执行以下语句把所有.c文件进行编译得到了.o文件。gcc -c *.c使用ar指令把所有.o文件链接成静态库,如下:-r(replace):此选项表示在插入文件到库时,若遇到同名的成员,则进行替换。它确保了库中的文件是最新的。-c(create):这个选项用于创建一个新的库文件。如果指定的库文件已经存在,它并不会被覆盖,而是会报错提示文件已存在。原创 2025-01-23 10:15:58 · 1175 阅读 · 49 评论 -
智能指针原理、使用和实现——C++11新特性(三)
智能指针简称RAll,是一种自动化管理资源的类模板,这里指的资源可以是:动态开辟的内存,文件指针,网络连接,互斥锁等等。RAII在获取资源时把资源委托给⼀个对象,接着控制对资源的访问,利用对象的⽣命周期结束时会自动析构的特性来完成对资源的自动释放,这样保障了资源的正常释放,避免资源泄漏问题。原创 2024-11-18 10:15:20 · 934 阅读 · 74 评论 -
C++11新特性(二)
C++11⽀持可变参数模板,也就是说⽀持可变数量参数的函数模板和类模板,可变数⽬的参数被称为参数包,存在两种参数包:模板参数包,表⽰零或多个模板参数;函数参数包:表⽰零或多个函数参数。原创 2024-11-12 12:35:21 · 1071 阅读 · 68 评论 -
右值引用——C++11新特性(一)
右值引用在引用右值的时候实际上是把该右值的资源的地址保存。而该资源不会被立即释放掉,相当于延长了生命周期,因为右值都是一些临时对象、常量、匿名对象等这些“将亡”值。反正这些资源又没有人使用,那么就不急着释放它可以让右值引用接管它。原创 2024-11-11 08:44:29 · 807 阅读 · 56 评论 -
哈希表——unordered_set和unordered_map的封装
哈希函数:就是让数据与储存位置建立一种映射关系,通过这种映射关系就能够快速找到某个数据储存的位置。哈希冲突:不同的数据可能会映射到同一块区域,那么先储存的数据存到了该位置,后储存的数据的位置就被占用了,这两个数据产生哈希冲突。原创 2024-10-28 12:05:31 · 3594 阅读 · 76 评论 -
位运算——优选算法
按位与:&两者为真(1)才为真(1),也可以理解为只要有假(0)就一定为假(0),如下:按位或:|只要有一个是真(1)则为真(1),否则为假(0)按位异或:^相同为假(0),相异为真(1),如下:1==异或(^)运算规律:对任意常数a,b,c有:按位取反:~真(1)变为假(0),假(0)变为真(1),如下:位运算的优先级关于位运算的优先级是一个让人很头疼的事情,不过也很好解决,直接简单粗暴多加括号就行,就像写宏定义一样。原创 2024-10-23 13:08:15 · 3338 阅读 · 74 评论 -
红黑树的理解与实现(详解)
红黑树规则(重点!红黑树的性质都由以上4点规则决定的,其中的一个性质:红黑树最长路径的节点数量一定不会大于最短路径的两倍。这使得红黑树虽然不是完全平衡但高度差没有那么大,查找效率依旧是longN级别的。红黑树为什么能实现最长路径不会超过最短路径的两倍呢?我们可以想一想如果其中任意一条路径有n个黑节点,最短路径的颜色是然后分布,最长路径颜色又是然后分布的呢?其实很简单根据第4条规则我们可以最短的路径的节点不可能低于n个,(即最少的时候为n个黑节点)。原创 2024-10-19 11:17:16 · 1091 阅读 · 83 评论 -
AVL树的创建与检测
什么是AVL树?其实它就是一颗平衡的二叉搜索树,我们都知道一颗二叉搜索树在极端情况下会退化为单支(和链表同样的结构),那么它的查找效率就会变为O(N),AVL树的就是通过一些操作来防止这种退化,从而使查找效率保持在O(logN)。对一个AVL树操作的时候首先就是需要知道它是否平衡,所以可以在节点上多增加一个变量用来储存左右子树的高度差,这个数据我们就称之为平衡因子。(即平衡因子=左子树的高度-右子树的高度)平衡因子只是起到一个辅助的作用,也可用其他方式。原创 2024-10-05 11:09:59 · 1227 阅读 · 88 评论 -
二叉搜索树
左右⼦树也分别为⼆叉搜索树如下:⼆叉搜索树中可以⽀持插⼊相等的值,也可以不⽀持插⼊相等的值,具体看使⽤场景定义。原创 2024-09-24 07:58:06 · 920 阅读 · 79 评论 -
set和map结构的使用
如果快指针与慢指针相遇,则有环并记录相遇点,找两个速度相同的指针一个从头开始走,一个从相遇点开始走,那么它们相遇时的点就为环的入口点。方法二:使用一个指针从链表的头走到尾,并且使用一个set容器,每走一步判断set中是否已存入该值,如果没有则存入,如果有那么这个链表一定有环并且该点就是环的入口点,直接返回该值即可。map和set的区别:set一块区域只储存一个关键字(记为key),而map储存的是一个key和value,key和value是一个映射关系,通过key可以找到对应的vaule。原创 2024-09-28 09:16:52 · 1355 阅读 · 85 评论 -
多态的使用和原理(c++详解)
多态顾名思义就是多种形态,它分为编译时的多态(静态多态)和运行时的多态(动态多态),编译时多态(静态多态)就是函数重载,模板等,通过不同的参数来完成对不同的函数的调用(即生成多种形态)并且这个过程在编译阶段就已经完成。动态多态是在运行时根据对象的实际类型来确定调用函数的哪个版本,完成不同的⾏为。原创 2024-09-20 19:16:47 · 1979 阅读 · 79 评论 -
priority_queue模拟
priority_queue是C++标准库中的一个容器适配器,用于实现优先队列(priority queue)的数据结构。优先队列是一种特殊的队列,其中的元素按照一定的优先级进行排序,每次取出的元素都是优先级最高的。它的优先级是可以通过传入参数自己调整的,它的底层实现通常使用堆(heap)数据结构。主要特点元素有序:队列中的元素会根据其优先级进行排序,优先级最高的元素总是位于队列的头部(或称为队首)。原创 2024-08-29 07:20:53 · 1264 阅读 · 95 评论 -
迭代器失效
会引起其底层空间改变的操作,都有可能是迭代器失效,比如:resize、reserve、insert、assign、push_back等对象在扩容后迭代器还指向原空间,而原空间已经被弃用(内存已释放),再使用迭代器的话程序就会崩溃。原创 2024-08-19 18:13:40 · 915 阅读 · 66 评论 -
string模拟实现
string本质可以理解为储存char类型的顺序表,其中string的迭代器用一个char*就可以解决。所以string类成员变量如下:这里用了一个命名空间是为了区分库里面的string。接下来就对需要实现的函数一一讲解。原创 2024-08-17 12:01:22 · 1145 阅读 · 68 评论 -
模板初阶(详解)
这样每个类型交换都需要写一个函数重载,其中代码的重复率很高,只有类型不同而逻辑都一样,写起来也非常的繁琐,那我们能不能写一个通用的函数告诉编译器一个模版让编译器根据不同的类型利用该模版来生成代码呢?这就是本章的主题——模板。编写与类型无关的通用代码,是代码复用的一种手段。模板是泛型编程的基础。模板分为函数模板和类模板,接下来我们分别来详细学习。原创 2024-08-11 17:02:08 · 6868 阅读 · 0 评论 -
类和对象(下)
我们不写,编译器默认⽣成的构造,对内置类型成员变量的初始化没有要求,也就是说是否初始化是不确定的,看编译器。主要是完成清理工作,这个函数会在对象的主调函数结束的时候编译器会自动调用释放内存,一般这个函数都不需要自己写编译器会默认生成,对于动态申请的内存空间还需我们手动写一个析构函数去进行内存的释放。1.初始化列表是每个成员变量定义的地方,在每定义一个对象的时候都会走一遍初始化列表,而初始化列表是编译器默认生成的,当然也可以自己写一个来替代作初始化的构造函数。可以理解为你是我的朋友,我的私有可以给你用。原创 2024-08-04 11:53:54 · 1339 阅读 · 76 评论 -
类和对象(上)
类和对象,this指针,对象的大小,实例化,类域,访问限定符,类的定义,public,private,protected原创 2024-07-27 15:12:22 · 3167 阅读 · 84 评论 -
C++入门基础
命名空间,c++输入输出运算符,缺省参数,函数重载,引用,内联函数,inline,作用域,const常引用原创 2024-07-22 08:43:32 · 3608 阅读 · 81 评论
分享