C++学习
文章平均质量分 87
成分不含牛奶
深圳大学2022级新生,信息管理与信息系统专业,转码进行时
展开
-
C++学习进阶:C++11线程库
操作系统:线程-CSDN博客不同的语言实现多线程的本质就是对不同系统实现的多线程的实现进行封装。// C++跨平台封装对应系统的thread的实现 ---#else#endif线程的学习我们已经在前面的几篇操作系统博客中进行了系统的学习了,接下来我们主要对C++11线程库提供的接口进行学习。在开始这篇博客的学习之前,我们需要回顾操作系统:线程互斥|线程同步|锁的概念-CSDN博客。原创 2024-05-09 23:57:11 · 941 阅读 · 0 评论 -
C++学习进阶:IO流
流(Stream)是计算机编程中用来处理输入/输出(I/O)操作的一种抽象概念。在编程中,流可以被视为数据的连续序列,这些数据从数据源(如文件、内存缓冲区、网络套接字等)流向数据接收者(如另一个程序、设备或内存中的数据结构)。IO流(Input/Output Streams)是标准库提供的一种用于处理输入和输出操作的机制。这些流封装了数据的读写过程,使得开发者可以更方便地处理文件、控制台、内存和网络中的数据。输入流(Input Streams):用于从数据源读取数据。例如,是所有输入流的基类,原创 2024-04-20 23:41:07 · 625 阅读 · 0 评论 -
C++学习进阶:C++11|智能指针
这是一篇又臭又长又精华的博客,需要每一个模块认真学习,仔细理解,这一部分也是C++面试常考的内容,那么废话不多说,just do it!原创 2024-04-19 20:20:00 · 1016 阅读 · 0 评论 -
C++学习进阶:C++11特性(上)
C++11是C++语言的一个重要版本,引入了许多新的特性和改进。接下来进行这些新特性的学习!原创 2024-04-16 13:12:45 · 1125 阅读 · 0 评论 -
C++学习进阶:异常
我们在C语言的学习中,了解了C语言的错误处理机制是通过终止程序和返回错误码这两种形式。而对于C++,是通过使用“异常”这一种错误处理机制,它允许程序在运行时遇到错误时,能够以一种结构化和可预测的方式进行处理。异常处理机制包括:抛出异常(throw)、捕获异常(catch)原创 2024-04-18 23:14:15 · 805 阅读 · 0 评论 -
C++学习进阶:C++11特性(下)
可变参数模板是C++11引入的一种特性,它允许函数或类模板接受任意数量的参数。通过使用可变参数模板,我们可以编写更加灵活和通用的代码。可变参数模板使用...表示参数的可变性。我们可以在函数模板或类模板中使用可变参数模板。我们在命令行参数的学习中,知道参数是通过argv这个指针数组获取的,而对于可变参数模版它的参数是通过函数形参参数包中获取的。而Args对应着很多类型,我们在进行args访问时,会进入对应的...中不断“递归”查找到参数,并进行操作。这个场景也可以这样子解析参数包!原创 2024-04-18 14:42:44 · 959 阅读 · 0 评论 -
C++学习进阶:哈希思想的进一步体现
我们在之前对哈希表的学习,明白了哈希的本质就是一种映射!!!只要是实现了映射关系我们就能够说这个是“哈希”。哈希:通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素。在我们实际开发中,大部分场景是处理海量的数据,例如在博客中3.3中提及的如何在40亿数据中判断某个数据在不在的问题。因为哈希映射关系的这个思路,我们最终就可以通过更小的比特位来实现数据之间的映射。原创 2024-04-13 00:52:11 · 98 阅读 · 1 评论 -
C++学习进阶:二进制与位运算
这一部分本来是C语言的内容,当学习位图时,发现这一部分的只是有点欠缺,所以恶补了一下,望周知!!!原创 2024-04-11 21:06:41 · 479 阅读 · 0 评论 -
C++学习进阶:unordered_set和ma的实现
我们在上一篇博客数据结构与算法:哈希表-CSDN博客中学习了哈希表这个数据结构,也对哈希桶有了一定的了解,学习这个数据结构的本质是为了对STL容器unordered_set和unordered_map进行深入的学习我们在C知道中搜索“unordered_set和set 区别”,发现了这两个容器对应着不同的场景,为了更好的了解这个两个容器我们开始学习如何实现“unordered_set和map”把!!!C++学习进阶:map和set的实现-CSDN博客。原创 2024-04-10 00:27:40 · 966 阅读 · 0 评论 -
C++学习进阶:map和set的实现
我们知道set和map的底层其实是红黑树,在学习完红黑树这个数据结构之后,我们开始简单模拟实现一下这两个STL容器。原创 2023-12-14 14:25:34 · 939 阅读 · 0 评论 -
C++学习进阶:set 和 map
C++中的set是一种基于红黑树实现的关联容器,用于存储唯一且已排序的元素集合。set中的元素按照一定的顺序排列,插入和删除操作的时间复杂度为O(log n),查找操作的时间复杂度也为O(log n)。set中的元素必须是可比较的,因此需要重载运算符或者提供自定义比较函数。如图set分为普通set以及multiset,普通set就是上面所说存储唯一且已排序的元素结合,而multiset就是可以存储多个相同key的set那么我们先开始进行set的学习。原创 2023-11-21 12:23:35 · 328 阅读 · 0 评论 -
C++学习进阶:多态
在类与对象中重载一般出现在同一个类中的同名函数,参数不同 ,比如若干个构造函数重写一般出现在基类和派生类中的同名函数,且为虚函数,函数名/参数/返回值都需要一致,协变即为返回值分别为基类对象和子类对象重定义就是在基类和派生类的同名函数,但是不为虚函数,并且函数参数和返回值不做要求下面是3个例子初步稍微修改一下传入参数!原创 2023-11-03 19:30:54 · 43 阅读 · 0 评论 -
C++学习进阶:继承
继承的示意图,我们在设定一个学生类和老师类的时候发现会有一部分代码复合,于是乎我们为了让两个类内部代码不要太多符合,设定了一个语法叫做继承,通过创造一个父类Person然后让Student和Teacher来继承那一部分共有的数据,来达到复用的目的。一般只能子类对象赋值给父类对象,而父类对象不能赋值给子类对象,并且中间过程不产生临时对象,就是子类的部分,父类会有,直接就赋值相等内容即可。2.默认情况下,对同名成员的访问,是直接访问子类,但是通过父类名以及域操作符 :: 来访问父类。原创 2023-10-20 20:12:38 · 51 阅读 · 0 评论 -
重生之C++学习:模版进阶
前面我们已经开始了模版的学习,但是学习的内容比较容易,和单一,现在我们继续加强模版的学习吧。原创 2023-10-18 13:12:44 · 32 阅读 · 0 评论 -
重生之C++学习:stack and queue
在我们完成基础的几个数据结构,顺序表,链表后,STL容器里面也有栈,队列,还有一个新的容器deque,与栈,队列容器的实现有关。那么我们开始吧。原创 2023-10-13 19:43:42 · 51 阅读 · 0 评论 -
重生之C++学习:list
在之前的学习中我们访问对象的成员主要有两种方式 . 操作符 以及 -> 操作符在C语言中,访问对象成员的方式取决于对象的类型。如果对象是一个结构体(structure),可以使用点操作符(.)来访问成员。如果对象是一个指向结构体的指针,可以使用箭头操作符(->)来访问成员。假定一个场景,我们定义一个AA结构体然后在迭代器中运行,通过迭代器来访问AA里面成员重载->代码如下// 自定义类型 -> 读取重载问题可能出在于迭代器对象无法直接对应到AA对象实际上是。原创 2023-10-11 00:19:13 · 49 阅读 · 0 评论 -
重生之C++学习:vector
在研究会我们发现,string对应的是字符串对象,而vector随着类型的改变而改变存储的数据类型,也就是既可以存储数字,也可以存储字符串,那么就需要用模版来实现多种数据类型的find,因此就使用全局find,语法也与string有差异。每个一维数组有自己的索引,可以通过索引来访问二维数组中的元素。如图 与传统的_array,_size,_capacity不同,vector用的是三个指针(迭代器)_start,_finish, _end_of_storage,来实现功能,本质上两种实现是一致的。原创 2023-10-08 14:21:50 · 35 阅读 · 0 评论 -
重生之C++学习:string的实现
回顾前文我们学习了,string的初步实现,但是学习STL过程中我们不仅需要会用,更需要了解底层来造轮子,现在我们开始string造轮子首先我们开始准备个框架。原创 2023-09-25 16:55:25 · 35 阅读 · 0 评论 -
重生之C++学习:string的使用(二)
接下来我们继续string使用的学习。原创 2023-09-18 10:29:01 · 62 阅读 · 0 评论 -
重生之C++学习:string的使用(一)
string是一种数据类型,用于表示文本或字符序列。在许多编程语言中,包括C,C++,Java,Python等,都有string类型。它允许存储和操作任意长度的字符序列,包括字母、数字、符号等。在字符串中,每个字符都有一个相应的索引值,可以通过索引访问和修改字符串中的单个字符。字符串可以用于处理文本数据、输入输出操作、字符串拼接、字符串比较等对于STL组件的学习,我们一般是从会用到手撕模拟,所以我们一开始就学习一下String的使用。原创 2023-09-14 18:44:24 · 40 阅读 · 0 评论 -
重生之C++学习:模板初阶
在之前的学习中,我们学习过函数重载,可以借助一样的函数名,重载不同的参数类型,以swap函数重载int,double,char3种类型为例,我们发现还是会有一点的麻烦(也会存在代码复用率低和可维护性低,容易出错等问题),在这个基础上,衍生出了模板,泛型编程。那么如果是用泛型,编译器用模板实例化生成对应的swap函数 就是 上面重复的函数重载的内容。虽然最终公用的是一样的main函数,但是泛型编程显然更加方便简洁,也更加高级。对于函数重载,我们需要多写几个函数。原创 2023-09-12 12:33:11 · 53 阅读 · 0 评论 -
重生之c++学习:类与对象进阶3
初始化列表作为初始值的绑定,例如我们知道的假如在封装区(private)处给成员变量绑定初始值,最后也回到初始化列表来分配,初始化列表()给的值是多少最后就是多少的初始值,然后构造函数里面是在初始化后的赋值,总结就是初始化列表的优先级更高,然后构造函数内部是对初始化后的成员变量进行赋值。对于匿名对象来说我们不用可以创造一个对象,我们直接一次性使用,通过创造匿名对象,来完成我们的目标,并且也可以让代码看起来更加整洁。所以我们以后进行动态内存开辟的时候就用new方便一点啦,然后在使用配套的delete来释放。原创 2023-09-08 16:11:49 · 29 阅读 · 0 评论 -
重生之c++学习:类与对象进阶1
在构造函数和析构函数中,我们定义类型的时候,属于c++内置类型,例如:int / char / double /.....这些时,c++编译器不进行处理,如果是自定义的成员变量(如结构体成员),那编译器就会去生成处理,向下回去处理该成员的默认构造函数,那么到了这里构造函数和析构函数的学习就结束啦。原创 2023-07-24 15:55:11 · 30 阅读 · 0 评论 -
重生之c++学习:类与对象初阶
如图所示:我们在学习结构体是总是定义一个结构体对象,然后这个对象在结构体外部一个一个函数进行操作,面向着过程在实现我们的需求。但是这样子分步骤来实现需求总是显得比较麻烦,就像是手洗衣服一样,那么现实生活中有洗衣机,所以cpp引入了类这个概念,然后将过程集中到类里面,我们只需在类外面进行“洗衣服”这个操作,这样可以面向对象了,下面我们用一个栈的类来体现我们在void test_1()处直接定义了一个对象,然后开始使用类这个“洗衣机”来完成“洗衣服”,那下面正式开始类与对象的学习。原创 2023-07-20 22:38:11 · 35 阅读 · 0 评论 -
重生之C++学习:引用
引入:我们在生活中可能会有多多少少的外号(小名),而这个外号即是别名,在语法的层面上c++中的引用就是别名。原创 2023-07-19 18:57:31 · 73 阅读 · 0 评论 -
重生之C++学习:缺省函数,函数重载,内联函数
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时,如果没有指定实,参则采用该形参的缺省值,否则使用指定的实参,就是缺省函数,可以传入函数所需参数的部分,未传入部分用设定值来替代,// 通过缺省的程度来判断全缺省和半缺省//不传入参数,使用形参默认值int ret2 = Add(1, 2, 3) //传入参数,使用指定实参return 0;半缺省参数 // 半缺省函数需要赋值// 传入三个参数可以// 传入x,y可以Add(1, 2);原创 2023-07-18 22:26:16 · 43 阅读 · 0 评论 -
重生之C++学习:命名空间namespace
命名空间命名空间的作用命名空间的展开。原创 2023-07-18 20:10:03 · 46 阅读 · 1 评论