
移情别恋c++
文章平均质量分 91
c++
hope kc
.
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——16.智能指针
/ 函数指针形式// 函数对象形式中的args...确实会被转发到ClassName参数数量和类型决定调用哪个构造函数支持所有形式的构造函数(包括默认构造、参数化构造、移动构造等)是现代C++中创建unique_ptr的推荐方式。原创 2025-07-28 15:00:48 · 922 阅读 · 0 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——15.C++11(2)
C++11 引入的可变模板参数(variadic templates)使得模板参数的数量可以是任意多个,极大地提升了 C++ 的模板编程能力。可变模板参数的引入,让函数、类和类型定义都可以处理任意数量的参数,从而大大增强了 C++ 的泛型编程能力。expand函数中的逗号表达式:(printarg(args), 0),也是按照这个执行顺序,先执行。在此基础上,可以定义不同类型和数量的模板参数,以实现功能更为复杂的泛型数据结构。例如,实现一个通用的。可变模板参数的展开是指将模板参数包展开成实际的参数。原创 2024-11-30 18:23:42 · 1506 阅读 · 54 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——14.哈希(3)(布隆过滤器和位图)
bitset是 C++ 标准库中的一个类模板,主要用于管理固定大小的位集合。它能够在一个单一的对象中存储多个二进制位,非常适合用于需要高效存储和快速访问位信息的场景。Bloom Filter 是一种空间效率极高的概率性数据结构,主要用于检测某个元素是否在集合中。与bitset不同,Bloom Filter 允许出现一定的误判,即可能会错误地判断某个元素在集合中(假阳性),但绝不会漏掉真实存在的元素(假阴性)。高效存储:两者都能够在内存使用上做到高效。位操作:都可以在位级别进行操作,适合处理布尔类型的数据。原创 2024-10-23 19:13:26 · 2683 阅读 · 49 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——5.string(无习题)
C++ 中的string是标准模板库(STL)中一个用于处理字符序列的类。相较于 C 语言中的字符数组,string提供了更丰富和安全的功能,可以轻松进行字符串的创建、修改和操作。string是 C++ 标准库中的一个重要部分,广泛用于各种需要处理文本的程序中。本篇文章将详细总结 C++ 中的string容器,涵盖其基本使用方法、成员函数、与 C 风格字符串的相互转换、高级功能及其在实际应用中的一些优化技巧。stringC++ 中的string容器是一个功能强大的类,提供了丰富的接口来处理各种字符串操作。原创 2024-10-19 13:52:23 · 1442 阅读 · 41 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——8.stack&&queue&&priority_queue(无习题)
C++ 标准模板库(STL)提供了一系列容器,其中stack和queue是两种常用的适配器容器。它们基于底层的序列容器(如vectordeque)实现,分别用于支持栈和队列的操作模型。栈(stack)遵循“后进先出”(LIFO)的原则,而队列(queue)遵循“先进先出”(FIFO)的原则。本文将详细介绍这两种容器的特点、使用方法、实现机制及其应用场景。stackqueue以下是一个完整的示例代码,展示了stackqueue和// stack 示例s.push(1);s.push(2);原创 2024-10-22 20:21:38 · 1704 阅读 · 61 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——15.C++11(1)
C++11 中引入的 std::array 是标准模板库(STL)中的一个容器类,提供了一个固定大小的数组,具有数组的简单性和 STL 容器的功能。定义时const修饰符后的左值,不能给他赋值,但是可以取它的地址。:与 C 风格的数组相比,std::array 提供了更好的边界安全性,可以使用。,可以根据初始值的类型自动推导变量的类型,从而减少了手动声明类型的繁琐。右值可以出现在赋值符号的右边,但是不能出现出现在赋值符号的左边,这里没有调用深拷贝的拷贝构造,而是调用了移动构造,移动构造中。原创 2024-10-27 11:56:02 · 3698 阅读 · 105 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——14.哈希(2)(模拟实现)
开散列(Open Hashing),也叫链地址法,是一种解决哈希冲突的方法。每个哈希表槽位保存一个链表,所有散列到同一位置的元素都存储在该链表中。当插入元素发生冲突时,将新元素添加到相应槽位的链表末尾。原创 2024-10-20 12:01:19 · 3237 阅读 · 72 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——14.哈希(1)
在C++98中,STL提供了底层为红黑树结构的一系列关联式容器,在查询时效率可达到==log2N==,即最差情况下需要比较红黑树的高度次,当树中的节点非常多时,查询效率也不理想。最好 的查询是,进行很少的比较次数就能够将元素找到,因此在C++11中,STL又提供了4个unordermap系列的关联式容器,这四个容器与红黑树结构的关联式容器使用方式基本类似,只是 其****原创 2024-10-15 13:07:10 · 2823 阅读 · 75 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——6.vector(无习题)
vectorvector是 C++ 中非常强大且常用的容器,适用于需要动态大小且具有随机访问需求的场景。它提供了丰富的操作接口,并且通过连续的内存布局提供了较高的访问效率。然而,在涉及频繁插入和删除操作时,特别是在中间位置的操作,vector的性能可能会受到限制。合理选择合适的容器以匹配具体的应用场景非常重要,例如在需要频繁插入和删除的场景中可以选择list,在需要快速访问头尾元素的场景中可以选择deque。对于大多数应用场景,vector是一个高效且灵活的选择,能够满足大多数序列数据的处理需求。原创 2024-10-16 09:01:55 · 1682 阅读 · 51 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——14.AVL树
/右节点//左节点//父节点,三叉链表int bf;//右子树高度-左子树高度,只有孩子发生变化,bf才有可能发生变化!!!!,若改变父亲,bf不变!!!!!!AVLtreenode(const pair& _kv) //初始化列表,kv(_kv),bf(0){}原创 2024-09-23 14:00:51 · 2208 阅读 · 132 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——15.红黑树
enum colorRED,BLACK//列举color的各种可能情况color col;:_left(nullptr) //左孩子, _right(nullptr) //右孩子, _parent(nullptr) //父亲, kv(_kv), col(RED){}原创 2024-09-28 18:20:02 · 2556 阅读 · 127 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——12.二叉树(习题)
我的思路:1. 根节点单独讨论,2.根节点的左孩子和右孩子分别进入operation函数operation函数:1.如果root不为空,先加(,再加root->val2.分类讨论:=NULL)如果左为空,右不为空;无法省略括号,3.如果左右都不为空递归最后加)函数介绍。原创 2024-09-13 17:51:42 · 1806 阅读 · 88 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——7.list(无习题)
list双向链表是一种链式存储结构,与单向链表相比,它多了一个指向前驱节点的指针。这样设计的优点是,可以从任意一个节点向前或向后遍历链表,操作更加灵活。数据部分:存储节点的数据元素。前驱指针:指向前一个节点。后继指针:指向后一个节点。这种结构使得插入和删除节点的操作效率较高,因为只需修改相关节点的前驱和后继指针,而不需要移动其他节点的数据。C++ 中的list容器是一种基于双向链表的数据结构,适合需要频繁插入和删除元素的场景。list。原创 2024-10-16 09:21:18 · 1906 阅读 · 96 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——13.map&&set(无习题)
C++ 标准模板库(STL)提供了多种关联容器,用于管理键值对和集合的数据。其中,set和map是最常用的两种关联容器。set用于存储唯一的元素集合,而map则用于存储键值对,其中每个键都是唯一的。它们都使用红黑树(自平衡二叉搜索树)作为底层实现,因此可以提供高效的插入、查找和删除操作。本文将详细介绍set和map容器的特点、使用方法、底层机制及其应用场景。setmap以下是一个完整的示例代码,展示了setmapmultisetmultimap和// set 示例s.erase(3);原创 2024-10-17 10:06:46 · 2002 阅读 · 77 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——13.map&&set
set是标准模板库(STL)中的一种关联容器,它存储的元素是唯一的,并且按照特定的顺序(默认是升序)自动排序。kw=set注意:1. 与map/multimap不同,map/multimap中存储的是真正的键值对set中只放 value,但在底层实际存放的是由构成的键值对。2. set中插入元素时,只需要插入value即可,不需要构造键值对。3. set中的元素不可以重复(因此可以使用set进行去重)。!!!!!!!!!!原创 2024-09-16 17:47:05 · 2592 阅读 · 103 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——13.map&&set(模拟实现)
之前构建treenode模板参数传的是class k,class v(set为k,k;map是k,v),原创 2024-10-03 17:28:56 · 2301 阅读 · 78 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——8.stack&&queue&&priority_queue(模拟实现)
可通过模板使用其他类来建立stack(如vector,list)能不能使用其他类来建立新的类(如增查删改)原创 2024-08-30 19:36:20 · 1443 阅读 · 61 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——11.多态
在继承中要构成多态还有两个条件:1. 必须通过基类的指针或者引用调用虚函数2. 被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写在虚函数的后面写上 =0 ,则这个函数为纯虚函数。包含纯虚函数的类叫做抽象类(也叫接口 类),抽象类不能实例化出对象。派生类继承后也不能实例化出对象,只有重写纯虚函数,派生 类才能实例化出对象。纯虚函数规范了派生类必须重写,另外纯虚函数更体现出了接口继承。原创 2024-09-08 23:39:42 · 1623 阅读 · 152 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——8.stack&&queue
思路1.将一个栈当作输入栈,用于压入 push 传入的数据;另一个栈当作输出栈,用于 pop 和 peek 操作。2.每次 pop 或 peek 时,若输出栈为空则,这样输出栈从栈顶往栈底的顺序就是队列从队首往队尾的顺序。原创 2024-08-27 12:16:49 · 1561 阅读 · 112 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——7.list(模拟实现)
区别:list的迭代器底层和其他两个迭代器底层有很大区别,因为list的链式结构决定了与它们两个的不一样相同:迭代器用法大致一样,其他成员函数的使用也大致一样。vector与list都是STL中非常重要的序列式容器,由于两个容器的底层结构不同,导致其特性以及 应用场景不同,其主要不同如下。原创 2024-08-26 00:17:30 · 1346 阅读 · 78 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——12.二叉搜索树
二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:1.若它的左子树不为空,则左子树上所有节点的值都小于根节点的值2.若它的右子树不为空,则右子树上所有节点的值都大于根节点的值3.它的左右子树也分别为二叉搜索树。原创 2024-09-11 21:37:42 · 1347 阅读 · 111 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——9.模板进阶
的数组。原创 2024-09-02 13:32:04 · 1998 阅读 · 90 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——6.vector(模拟实现)
可见,vector内核是。原创 2024-08-22 23:28:34 · 959 阅读 · 87 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——6.vector
在「杨辉三角」中,。原创 2024-08-19 18:33:12 · 1785 阅读 · 92 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——10.继承
下面我们看到Person是父类,也称作基类。Student是子类,也称作派生类。继承和组合:1.public继承是一种is-a的关系。也就是说每个派生类对象都是一个基类对象。2.组合是一种has-a的关系。假设B组合了A,每个B对象中都有一个A对象。3.优先使用对象组合,而不是类继承。4.继承允许你根据基类的实现来定义派生类的实现。这种通过生成派生类的复用通常被称 为白箱复用(white-box reuse)。在继承方式中,基类的 内部细节对子类可见。继承一定程度破坏了基类的封装,原创 2024-09-05 08:50:00 · 2002 阅读 · 101 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——2.类和对象(上)
• class为定义类的关键字,Stack为类的名字,{}中为类的主体,注意类定义结束时后⾯分号不能省 略。类体中内容称为类的成员:类中的变量称为类的属性或成员变量;类中的函数称为类的⽅法或 者成员函数。• C++中struct也可以定义类,C++兼容C中struct的⽤法,同时struct升级成了类,明显的变化是 struct中可以定义函数,⼀般情况下我们还是推荐⽤class定义类。• 定义在类⾯的成员函数默认为inline。原创 2024-08-03 00:11:57 · 1045 阅读 · 49 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——2.类和对象(下)
⽆论是否显⽰写初始化列表,每个构造函数都有初始化列表;⽆论是否在初始化列表显⽰初始 化,原创 2024-08-06 12:30:33 · 1413 阅读 · 72 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——5.string
思路:1.如果两个串有一个首元素为‘0’,则直接返回‘0’2.设置两层循环,内层用于str插入初始数据(num2 的各个元素和num1 的最后一个元素相乘的结果)3.若存在内层第二次循环,则用num2 的各个元素和num1 的倒数第二个元素相乘依次与str相应位置进行相加,4.最后进行reverse(str.begin(),str.end()) 倒置字符串。原创 2024-08-12 15:46:18 · 1602 阅读 · 98 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——4.模板
class 类模板名// 类内成员定义class 类模板名// 类内成员定义// 类模版public:_size = 0;// 模版不建议声明和定义分离到两个文件.h 和.cpp会出现链接错误,具体原因后面会讲void Stack::Push(const T& data) //记得stack后加!!!!!!// 扩容++_size;} //写在类外面int main()// int// double。原创 2024-08-09 18:58:30 · 1011 阅读 · 54 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——5.string(模拟实现)
str:指向字符串存放的空间的指针_size:代表当前所存储的有效字符数量_capacity:代表当前可存储的最大容量nops:此值设置为 -1,无符号整型转换就是42亿,且此值为const和静态参数具有全局效应,某些函数设置其为缺省参数。原创 2024-08-17 11:18:14 · 1359 阅读 · 86 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——2.类和对象(中(1))
所以这⾥⾃定义类型。原创 2024-08-04 00:14:01 · 1252 阅读 · 60 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——3.内存管理
int main()// new/delete 和 malloc/free最大区别是 new/delete对于【自定义类型】除了开空间还会调用构造函数和析构函数//1传给构造函数进行初始化free(p1);delete p2;// 内置类型是几乎是一样的// Cfree(p3);delete p4;free(p5);return 0;原创 2024-08-08 00:14:31 · 1234 阅读 · 63 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——2.类和对象(中(2))
⼀元运算符有⼀个参数,⼆元 运算符有两个参数,⼆元运算符的左侧运算对象传给第⼀个参数,右侧运算对象传给第⼆个参数。• 如果⼀个重载运算符函数是成员函数,则它的第⼀个运算对象默认传给隐式的this指针,因此运算 符重载作为成员函数时,参数⽐运算对象少⼀个。对内置类型成员变量会完成值拷⻉/浅拷⻉(⼀个字节⼀个字节的拷⻉),对⾃定义 类型成员变量会调⽤他的赋值重载函数。直接的拷⻉赋值,这⾥要注意跟 拷⻉构造区分,拷⻉构造⽤于⼀个对象拷⻉初始化给另⼀个要创建的对象。赋值运算符重载是⼀个默认成员函数,⽤于完成。原创 2024-08-05 10:18:29 · 1447 阅读 · 62 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——1.c++入门(2)
因为inline被展开,就没有函数地 址,链接时会出现报错。原创 2024-08-01 15:27:48 · 1080 阅读 · 51 评论 -
移情别恋c++ ദ്ദി˶ー̀֊ー́ ) ——1.c++入门(1)
• 定义命名空间,需要使⽤到namespace关键字,后⾯跟命名空间的名字,然后接⼀对{}即可,{}中 即为命名空间的成员。命名空间中可以定义变量/函数/类型等。• namespace本质是定义出⼀个域,这个域跟全局域各⾃独⽴,不同的域可以定义同名变量,所以下 ⾯的rand不在冲突了。• C++中域有函数局部域,全局域,命名空间域,类域;域影响的是编译时语法查找⼀个变量/函数/ 类型出处(声明或定义)的逻辑,所有有了域隔离,名字冲突就解决了。原创 2024-07-30 20:12:11 · 1080 阅读 · 60 评论