![](https://img-blog.csdnimg.cn/e761bd1161fe4448a64953360bec4d30.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
【从零开始学习C++】
文章平均质量分 86
学习C++
我是一盘牛肉
西安哔哩哔哩大学软件工程 大二学生 深夜工作者
用0和1创造我们的新世界吧!
展开
-
【从零开始学习C++ | 第二十二篇】C++新增特性(下)
本文我们将继续介绍C++新增十大特性的剩余六个,如果没有看过介绍前四个特性的小伙伴的可以点进我C++的专栏就可以看到。原创 2023-06-26 12:59:13 · 1465 阅读 · 6 评论 -
【从零开始学习C++ | 第二十一篇】C++新增特性 (上)
C++的学习难度大,内容繁多。因此我们要及时掌握C++的各种特性,因此我们更新本篇文章,向大家介绍C++的新增特性。原创 2023-06-26 10:02:58 · 9006 阅读 · 3 评论 -
C++ 进阶篇复习:
类和对象:本篇仅对本人C++五月份的学习做一个大致的思维导图和总结,各个详细的知识点在具体文章中都有提到,本文不对所有的知识点做详细的解释,如有需要可以移步具体文章进行阅读理解。原创 2023-05-31 17:05:11 · 921 阅读 · 7 评论 -
C++ 常见集合算法
set_intersection是STL中的一个算法函数,用于求两个已经有序的集合的交集,并将结果输出到一个目标容器中。last1first2last2d_first函数返回值为输出结果容器的结束迭代器。set_intersection函数会将两个集合的交集元素依据元素的大小关系依次复制到目标容器中,并返回目标容器的迭代器。原创 2023-05-30 22:40:29 · 1897 阅读 · 1 评论 -
C++ 常用算数生成算法
该算法函数需要调用头文件。原创 2023-05-30 21:55:18 · 1063 阅读 · 1 评论 -
C++ 拷贝替换算法
在 C++ STL 中,copy()是一种常用的算法,,不会改变原有序列的大小。📖其中,first和last分别表示被复制序列的起始位置和结束位置;d_first表示目标序列的起始位置。📖copy()函数从源序列()中复制元素到目标序列()中。它返回目标序列中最后一个被写入元素的后继位置。copy()函数可以对标准数组、STL 容器等基本类型以及自定义类型进行操作。原创 2023-05-30 21:28:41 · 1355 阅读 · 0 评论 -
C++ 排序算法
🙂1.sort 排序📖在C++语言中,sort(排序)函数是STL(标准库)中的一个函数,它用于将一个数组或vector等STL容器中的元素进行排序。sort函数可以将元素以升序或降序的方式排序。sort函数的使用需要包含头文件。📖sort函数可以接受三个参数。原创 2023-05-30 20:23:55 · 1571 阅读 · 0 评论 -
C++ 遍历算法
在C++中,transform是一个标准库函数,用于将一个序列的元素进行转换。它通常有三个参数:📖1.输入序列的起始位置(iterator)📖2.输入序列的结束位置(iterator)📖3.输出序列的起始位置(iterator)此外,它通常还有一个可选的第四个参数,即用于转换的函数,该函数接受一个输入元素并返回一个输出元素。所以,📖其中,inputBegin和inputEnd是指输入序列的起始和结束位置;outputBegin是指输出序列的起始位置;原创 2023-05-30 00:49:26 · 1731 阅读 · 1 评论 -
C++ 函数对象 详解
用类创建出来的一个对象,调用起来语法结构像调用函数,我们把这种对象叫做函数对象。它通过重载函数调用操作符(operator())来实现可调用操作。可以将函数对象看作是一种可调用的“函数”,它可以封装一组函数调用所需要的状态和行为。函数对象可以像普通函数一样被调用,也可以像普通对象一样被拷贝、赋值、作为参数传递给其他函数等。函数对象广泛地应用于STL算法中,例如排序和查找等操作。函数对象可以使程序更加灵活和高效,因为它可以在运行时自定义函数的行为。原创 2023-05-30 00:02:38 · 4067 阅读 · 1 评论 -
C++ vector与map的结合运用
map和vector都是C++ STL(Standard Template Library)中的容器。Vector是一种动态数组,可以在运行时随意地添加或删除元素。它的元素排列是连续的,所以可以通过索引或迭代器高效地访问元素。Vector适合于需要随机访问和频繁插入和删除元素的场景。Map是一种关联容器,用于存储键-值对。Map可以根据键快速地检索和访问值。Map与vector不同,它不是基于位置(即索引)的容器,因此访问元素的方式不同。Map的元素是按照键排序的,可以通过迭代器或键访问元素。原创 2023-05-29 21:33:11 · 3695 阅读 · 0 评论 -
C++ map类成员介绍 (map与multimap)
📖map是C++中的关联容器之一,它提供了一种将键与值相关联的方式。它的实现基于红黑树,具有自动排序和快速查找的特性。其中,键是唯一的,相同的键只能存在一个,而值则可以重复。map的基本操作包括插入、删除、查找等,还支持迭代器遍历和基于范围的操作。可以使用中括号运算符或者迭代器来访问map中的元素,也可以使用find函数查找指定键对应的值。由于map是基于红黑树实现的,因此其插入和查找的时间复杂度均为O(logN)。📖关键点:自己重写仿函数,定义排序规则。原创 2023-05-29 20:14:52 · 2411 阅读 · 4 评论 -
C++ set类成员函数介绍 (set和multiset)
📖C++中的set是一个集合容器,它存储唯一且已排序的元素。具体来说,set容器内部的元素总是按照一定的规则排好序的,而且这些元素必须是唯一的,即不允许存储重复的元素。set还支持快速查找、删除和插入元素。📖set容器底层一般采用红黑树实现,因此它的插入、删除、查找操作的时间复杂度均为O(log n)。此外,set容器还提供了很多有用的成员函数和迭代器,比如begin、end、find等,使得我们可以方便地对set进行遍历、查找、排序等操作。原创 2023-05-28 22:35:55 · 4545 阅读 · 0 评论 -
sort算法的应用: 结构体排序
sort算法不能直接对类创建的对象进行排序,因为类的成员变量太多,sort函数无法自己确定是要对哪一个变量进行排序,因此需要我们自己手动写排序规则。原创 2023-05-28 18:50:15 · 755 阅读 · 6 评论 -
C++ list类成员函数介绍
C++中的list是一个双向链表模板类,提供了一系列方便的链表操作方法,比如在列表前后插入/删除元素、访问节点和迭代器等。它的底层实现是双向链表、由节点构成的结构,节点包含指向前一个节点和后一个节点的指针,使得链表的查找、插入和删除操作都比较高效。与vector相比,list不支持随机访问,但提供了更快的在任意位置进行插入和删除操作能力,list一般用于动态添加或删除元素比较多的情况,例如LRU缓存中存储最近使用过的数据。原创 2023-05-27 23:57:22 · 3175 阅读 · 8 评论 -
C++ queue类成员介绍
queue(队列)是一种数据结构,它可以在一端插入元素,另一端弹出元素,并且按照元素被放入队列的顺序进行访问。在队列中插入元素的一端叫做队尾(rear),从队列中弹出元素的一端叫做队首(front)。队列的典型应用包括广度优先搜索和缓存。在C++ STL中,队列实现为一个模板类,称为queue。它包含以下操作:📖1.push(x):将元素x插入队列尾部。📖2.pop():弹出队列头部元素。📖3.front():返回队列头部元素。📖4.back()原创 2023-05-28 02:45:00 · 1443 阅读 · 1 评论 -
C++ stack容器介绍
📖stack是一种数据结构,也可以被称为。它是一个容器,只允许在最顶层进行插入和删除,并且只能访问最后一个插入的元素。这个元素称为栈顶。所有新插入的元素都被放置在栈顶上面,当删除元素时,它们从栈顶开始向下移动,同时也随之被删除。由于stack只允许在进行操作,因此它是一个的数据结构(LIFO)。原创 2023-05-29 06:00:00 · 1916 阅读 · 0 评论 -
C++ vector模板和deque的简单应用
vector和deque都是C++ STL(标准模板库)中的容器模板,用于存储和管理数据。它们都提供了可动态调整大小的数组,允许在任何位置插入和删除元素。原创 2023-05-27 17:05:25 · 1394 阅读 · 0 评论 -
C++ deque类成员函数介绍
📖 deque是C++ STL中的一个双端队列模板,它支持在队列的两端进行元素的插入和删除操作。deque的全称是double-ended queue,即双向队列。deque的特点是可以高效地在队列的两端进行元素的插入和删除操作,而且可以在任意位置进行元素的访问和修改操作。📖1.支持迭代器:可以用迭代器随机访问容器中的元素。📖2.插入和删除:可以在队头和队尾进行自由的删除和插入,但是在中间插入或删除的时候效率比较慢,这是由于deque的内存结构决定的,我们会在下文进行解释。原创 2023-05-27 16:02:00 · 1797 阅读 · 3 评论 -
C++ vector类成员函数介绍
vector模板是C++标准库中的一个容器类,被设计为动态数组,即它可以根据需要自动分配内存空间来存储元素。vector模板的本质是一个类模板,它使用了C++语言中的模板技术,使其能够适应不同的数据类型,提供了一种通用的容器类实现。具体而言,vector类使用连续的内存来存储元素,它提供了访问和操作元素的方法,如push_back()、pop_back()、at()、[]等,同时还提供了一些其他的方法,如size()、capacity()、empty()等,以帮助用户管理容器的大小和内存分配等问题。原创 2023-05-24 17:42:43 · 8381 阅读 · 8 评论 -
C++ string类成员函数介绍:
目录🤔string本质 🔍string和char *区别: 🔍特点:🤔string的各种成员函数: 🔍1.string 构造函数 🔍2.string 赋值函数 🔍3.string 字符串拼接 🔍4.string 查找和替换字符串 🔍5.string 字符存取 🔍6.string插入与删除 🔍7.string子串原创 2023-05-22 21:18:08 · 336 阅读 · 4 评论 -
C++ 自定义模板详解
来编写通用的代码。模板可以使程序员编写出与类型无关的代码,从而使程序更具可重用性和灵活性。📖在C++中,有两种类型的模板:函数模板和类模板。函数模板可以定义一个通用的函数,使它适用于多种不同的数据类型。原创 2023-05-20 12:01:59 · 1659 阅读 · 8 评论 -
C++ 动态多态实现底层逻辑
📖在C++中,动态多态是通过虚函数(Virtual Function)和运行时类型识别(Run-time Type Identification, RTTI)来实现的。📖虚函数是在基类中声明的函数,在派生类中可以被重写(Override),并且通过基类指针或引用调用时,会根据实际对象的类型来调用相应的派生类函数,而不是基类函数。这种调用方式被称为动态绑定(Dynamic Binding)。📖运行时类型识别允许程序在运行时获取对象的类型信息。dynamic_cast和typeid。原创 2023-05-17 17:23:33 · 2109 阅读 · 2 评论 -
C++ 多态关系详解
多态关系🤔:📖1.是指同一种行为对应不同的实现,即同名函数有不同的实现。多态是实现“一种接口(相同的函数名),多种方法(多种函数实现)”的技术。多态种类😋:📖 1.静态多态关系🔍 例如函数重载和运算符重载属于是静态多态。📖2.动态多态关系🔍 例如派生类和虚函数实现运行时是动态多态。二者区别😋:📖1.静态多态的函数地址早绑定,在编译阶段就已经决定😝。📖上图的代码就存在一个问题:我们在调用函数的时候,t,那么最终的实际结果到底是打印还是”猫在说话“呢?原创 2023-05-16 23:00:58 · 1073 阅读 · 3 评论