C++
文章平均质量分 90
以C++的基础知识为主
先鱼鲨生
学习笔记,写一些C++、数据结构、Linux等。和大家一起学习!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
【C++】C++11部分
auto i = 1;//整型//浮点型//指针//迭代器。原创 2025-03-09 20:03:17 · 850 阅读 · 0 评论 -
【C++】智能指针
这是因为我们的ptr先构造,指向了一个int的动态内存空间,然后ptr1拷贝构造出了ptr2,此时ptr1和ptr2都指向这个int的动态内存空间。当shared_ptr对象的生命周期结束时就会调用传入的删除器完成资源的释放,调用该删除器时会将shared_ptr管理的资源作为参数进行传入。当指向的动态内存是一次性开辟的数组的形式,模板参数要写为type[]的形式,来告诉unique_ptr该指针维护的动态内存,是以数组的形式开辟的。如果我们每次申请资源后都自己释放当然是可以的,但是这样也太麻烦了吧。原创 2025-03-07 13:22:18 · 822 阅读 · 0 评论 -
【C++】map与set的使用
set是按照一定次序存储元素的容器在set中,元素的value也标识它(value就是key,类型为T),并且每个value必须是唯一的。set中的元素不能在容器中修改(元素总是const),但是可以从容器中插入或删除它们。在内部,set中的元素总是按照其内部比较对象(类型比较)所指示的特定严格弱排序准则进行排序。set容器通过key访问单个元素的速度通常比unordered_set容器慢,但它们允许根据顺序对子集进行直接迭代。set在底层是用二叉搜索树(红黑树)实现的。原创 2025-02-25 06:57:08 · 992 阅读 · 0 评论 -
【C++】 stack和queue以及模拟实现
3.1 priority_queue的介绍优先队列是一种容器适配器,根据严格的弱排序标准,它的第一个元素总是它所包含的元素中最大的。此上下文类似于堆,在堆中可以随时插入元素,并且只能检索最大堆元素(优先队列中位于顶部的元 素)。优先队列被实现为容器适配器,容器适配器即将特定容器类封装作为其底层容器类,queue提供一组特 定的成员函数来访问其元素。元素从特定容器的“尾部”弹出,其称为优先队列的顶部。底层容器可以是任何标准容器类模板,也可以是其他特定设计的容器类。原创 2025-02-24 18:07:26 · 843 阅读 · 0 评论 -
【C++】继承与多态
定义格式下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类。继承关系和访问限定符继承基类成员访问方式的变化类成员/继承方式public继承protected继承private继承基类的public成员派生类的public成员派生类的protected 成员派生类的private 成员基类的protected 成员派生类的protected 成员派生类的protected 成员派生类的private 成员基类的private成员在派生类中不可见。原创 2024-12-09 11:48:32 · 983 阅读 · 0 评论 -
【C++】 list接口以及模拟实现
C++中的list是一个双向链表容器。它允许在任意位置进行快速插入和删除操作,并且能够在常量时间内访问任意元素,并且该容器可以前后双向迭代。1. list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2. list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3. list与forward_list非常相似:最主要的不同在于forward_list是单链表,只能朝前迭代,已让其更简单高效。原创 2024-11-28 09:26:52 · 1175 阅读 · 0 评论 -
【C++】 vector接口以及模拟实现
1.vector是表示可变大小数组的序列容器。它是标准模板库(STL)中的容器之一。2. vector可以采用下标对元素进行访问,它的大小是可以动态改变的,而且它的大小会被自动处理。3. vector内部使用动态数组,当前容量不足时会自动生成更大的数组,并将全部元素移到这个数组。4. 与其它动态序列容器相比(deque, list and forward_list), vector在访问元素的时候更加高效,在末 尾添加和删除元素相对高效。对于其它不在末尾的删除和插入操作,效率更低。原创 2024-11-25 08:45:49 · 1137 阅读 · 0 评论 -
二叉搜索树
二叉搜索树又称二叉排序树。具有以下性质:1.非空上所有节点的值都根节点的值2.非空上所有节点的值都根节点的值3.原创 2024-11-21 15:43:26 · 352 阅读 · 0 评论 -
C++ string以及模拟实现
这种拷贝方式,称为。原创 2024-11-21 14:18:49 · 1102 阅读 · 0 评论 -
C/C++内存管理
定位new功能:在已分配的原始内存空间中调用构造函数初始化一个对象。用法:new (指针) 类型 (初始化)使用场景。原创 2024-05-21 21:06:50 · 1971 阅读 · 3 评论 -
C++【初始化列表】【explicit】【匿名对象】【Static成员】【友元】【内部类】详解
(且该类没有默认构造函数时)classApublicAinta_aa{}privateint_a;classBpublicBintaintref_aaa_refref_n10{}privateA _aa;//没有默认构造函数//必须定义时初始化int_ref;//引用constint_n;// const3.初始化列表是每个成员定义的地方。不管你写不写,每个成员都要走初始化列表。原创 2024-05-16 22:24:18 · 1235 阅读 · 3 评论 -
C++类的6个默认成员函数
如果一个类中什么都没有,我们称为空类。那么空类中真的什么都没有吗?其实并不是。任何类什么都不写的情况下,编译器会默认生成六个默认成员函数。默认成员函数:用户没有显式实现,编译器会生成的成员函数。构造函数不会开空间创建对象,而是初始化对象。* 函数名与类名相同。* 无返回值。* 对象实例化时编译器自动调用对应的构造函数,对象的整个生命周期只出现一次。* 可以重载。* 如果没有显式定义,编译器会自动生成一个无参的默认构造函数。* 如果此函数被private修饰,那么无法从外部直接定义这个类。默认构造函数:不需要原创 2024-05-13 21:35:50 · 1868 阅读 · 2 评论 -
C++ 模板初阶
函数模板是一个蓝图,它本身并不是函数,是编译器用使用方式产生特定具体类型函数的模具。所以其实模板就是将本来应该我们做的重复的事情交给了编译器。函数模板代表了一个函数家族,该函数模板与类型无关,在使用时被参数化,根据实参的类型产生函数的特定类型模板。切记:不能使用struct代替class)。类模板实例化与函数模板实例化不同,,对于字符类型也是如此。,对于模板函数的使用,原创 2024-09-03 18:00:52 · 450 阅读 · 0 评论 -
C++的类的基本介绍
/类体:由成员函数和成员变量组成class为定义类的关键字,ClassName为类的名字,{}中为类的主体,注意类定义结束时后面分号不能省略。类体中内容称为类中的变量称为类的属性或成员变量;类中的函数称为类的方法或者成员函数。类的定义有两种方式:1.声明和定义都放在类体中。如果成员函数在类中定义,编译器可能当作内联函数处理。class A//类里面短小的函数,适合做内联的函数,一般在类里面定义2.声明放在.h文件里,定义放在.cpp文件里。声明放在类的头文件中。原创 2024-05-09 20:33:18 · 382 阅读 · 1 评论
分享