![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 91
雪芙花
学习学习
展开
-
C++源码分析完美转发
利用C++源码,深入了解 完美转发原创 2023-05-19 14:05:45 · 583 阅读 · 1 评论 -
快速了解make_shared
make_shared 快速了解原创 2023-04-02 21:04:14 · 397 阅读 · 1 评论 -
C/C++的类型转换
因为要兼容C语言的类型转换,所以C++ 当中的类型转换最多只是一个建议,不强制使用,但在很多公司中会明确说明要使用C++当中的类型转换来进行规范书写和避免错误。我们在平时写代码的时候,也尽量使用C++当中的类型转换,养成良好习惯。原创 2022-10-11 09:42:05 · 1495 阅读 · 45 评论 -
C++11智能指针(auto_ptr,unique_ptr,shared_ptr,weak_ptr的详解与模拟实现)
概念:RAII(Resource Acquisition Is Initialization)是一种利用对象生命周期来控制程序资源(如内存、文件句柄、网络连接、互斥量等等)的简单技术。在对象构造时获取资源,接着控制对资源的访问使之在对象的生命周期内始终保持有效,最后在对象析构的时候释放资源。借此,我们实际上把管理一份资源的责任托管给了一个对象。这种做法有两大好处:不需要显式地释放资源。采用这种方式,对象所需的资源在其生命期内始终保持有效。原创 2022-10-01 12:55:34 · 690 阅读 · 58 评论 -
C++异常的介绍和分析
本文主要讲的是C++异常的介绍和分析原创 2022-09-25 21:03:34 · 189 阅读 · 23 评论 -
c++11面试宝典(final,delete,deault,explicit,lambda表达式)
实际在底层编译器对于lambda表达式的处理方式,完全就是按照函数对象的方式处理的,即:如果定义了一个lambda表达式,编译器会自动生成一个类,在该类中重载operator()。比如:[=, &a, &b]:以引用传递的方式捕捉变量a和b,值传递方式捕捉其他所有变量 [&,a, this]:值传递方式捕捉变量a和this,引用方式捕捉其他变量。在C++11中,可以在默认函数定义或者声明时加=default,从而显式的指示编译器生成该函数的默认版本,用=default修饰的函数称为显式缺省函数。原创 2022-09-19 11:16:22 · 719 阅读 · 36 评论 -
c++11基础
在2003年C++标准委员会曾经提交了一份技术勘误表(简称TC1),使得C++03这个名字已经取代了C++98称为C++11之前的最新C++标准名称。不过由于TC1主要是对C++98标准中的漏洞进行修复,语言的核心部分则没有改动,因此人们习惯性的把两个标准合并称为C++98/03标准。从C++0x到C++11,C++标准10年磨一剑,第二个真正意义上的标准珊珊来迟。相比于C++98/03,C++11则带来了数量可观的变化,其中包含了约140个新特性,以及对C++03标准中约。原创 2022-09-14 21:31:48 · 664 阅读 · 43 评论 -
C++精通之路:设计模式(特殊类设计)
以上这几种设计都是通过staic的特性来实现的前面四种条件是通过将目标函数私有化,使其在外部不可调用。且用staic成员函数来在特定的条件下实行构造。(用到了staic成员函数可在类未初始化时就可调用的特性)单例模式则是通过staic成员变量的原子性来实现的。单例模式利用了一个staic 成员指针,指向一个类。再通过将目标函数(构造函数等)私有化,使其在外部不可调用。且用staic成员函数来实现对类的构造。1. 懒汉模式2. 饿汉模式。......原创 2022-08-30 22:43:36 · 711 阅读 · 73 评论 -
C++精通之路:红黑树的应用(模拟实现map/set)
因为红黑树的增删查改都是O(logN),所以用红黑树实现的map/set的增删查改也是O(logN),是个非常优秀的容器。原创 2022-08-16 20:18:26 · 952 阅读 · 16 评论 -
C++进阶之哈希(unordered_map/set的使用及其模拟)
顺序结构以及平衡树中,元素关键码与其存储位置之间没有对应的关系,因此在查找一个元素时,必须要经过关键码的多次比较。顺序查找时间复杂度为O(N),平衡树中为树的高度,即O(N),搜索的效率取决于搜索过程中元素的比较次数理想的搜索方法是可以不经过任何比较,一次直接从表中得到要搜索的元素。如果构造一种存储结构,通过某种函数(hashFunc)使元素的存储位置与它的关键码之间能够建立一一映射的关系,那么在查找时通过该函数可以很快找到该元素,则复杂度为O(1)非常的高效,而计数排序用的即是这种思想。......原创 2022-08-03 12:09:14 · 821 阅读 · 16 评论 -
C++精通之路:红黑树
文章目录红黑树一:红黑树的概念二:红黑树的性质三:红黑树节点的定义四:红黑树结构五:红黑树的插入操作情况一(只需要变色):情况二(单旋加变色):情况三(双旋加变色):插入的实现旋转实现六:红黑树的验证实现代码:七、红黑树的删除八:红黑树与AVL树的比较九:红黑树的应用总结很多小伙伴为了刷题发愁今天为大家推荐一款刷题神奇哦:刷题面试神器牛客各大互联网大厂面试真题。从基础到入阶乃至原理刨析类面试题 应有尽有,赶快来装备自己吧!助你面试稳操胜券,solo全场面试官红黑树一:红黑树的概念红黑树,是一原创 2022-08-01 09:59:15 · 868 阅读 · 15 评论 -
C++精通之路:map和set
map和set一:关联式容器二:键值对三:set1. set的介绍2. set的使用3. set的使用举例四: map一:map的介绍二:map的使用三:总结四:multimap五:有关oj题一:关联式容器容器分类:序列式容器:初阶阶段中学习过STL中的部分容器,如:vector、list、deque等,这些容器统称为序列式容器,因为其底层为线性序列的数据结构,里面存储的是元素本身关联式容器:关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是<key,valu原创 2022-05-21 22:31:19 · 378 阅读 · 31 评论 -
C++从入门到精通(第十篇) :二叉搜索树
二叉搜索树一:二叉搜索树概念二: 二叉搜索树实现节点的定义二叉搜索树实现三:二叉搜索树的应用四:二叉树有关面试题一:二叉搜索树概念二叉搜索树又称二叉排序树,它或者是一棵空树,或者是具有以下性质的二叉树:若它的左子树不为空,则左子树上所有节点的值都小于根节点的值若它的右子树不为空,则右子树上所有节点的值都大于根节点的值它的左右子树也分别为二叉搜索树 例:int a [] = {5,3,4,1,7,8,2,6,0,9};二: 二叉搜索树实现节点的定义template <cla原创 2022-05-11 16:22:14 · 580 阅读 · 27 评论 -
C++从入门到精通(第九篇) :多态
一:多态的概念概念通俗来说,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。举个栗子:比如买票这个行为,当普通人买票时,是全价买票;学生买票时,是半价买票;军人买票时是优 先买票。再举个栗子:最近为了争夺在线支付市场,支付宝年底经常会做诱人的扫红包-支付-给奖励金的活动。那么大家想想为什么有人扫的红包又大又新鲜8块、10块…,而有人扫的红包都是1毛,5毛…。其实这背后也是一个多态行为。支付宝首先会分析你的账户数据,比如你是新用户、比如你没有原创 2022-05-08 10:23:18 · 404 阅读 · 31 评论 -
C++从入门到精通(第八篇) :IO流
1. C语言的输入与输出C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。 scanf(): 从标准输入设备(键盘)读取数据,并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。注意宽度输出和精度输出控制。C语言借助了相应的缓冲区来进行输入与输出。如下图所示:对输入输出缓冲区的理解:1 .可以屏蔽掉低级I/O的实现,低级I/O的实现依赖操作系统本身内核的实现,所以如果能够屏蔽这部分的差异,可以很容易写出可移植的程序。2.可以原创 2022-05-04 21:43:05 · 725 阅读 · 63 评论 -
C++从入门到精通(第七篇) :vector深度剖析及模拟实现
vector深度剖析及模拟实现vector的介绍及使用vector的介绍vector是表示可变大小数组的序列容器。就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素 进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自 动处理。本质讲,vector使用动态分配数组来存储它的元素。当新元素插入时候,这个数组需要被重新分配大小 为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。就时间而原创 2022-04-20 17:03:51 · 307 阅读 · 8 评论 -
C++从入门到精通(第七篇) :string类的讲解和模拟实现
一.为什么要学习string类C语言中的字符串C语言中,字符串是以’\0’结尾的一些字符的集合,为了操作方便,C标准库中提供了一些str系列的库函数,但是这些库函数与字符串是分离开的,不太符合OOP的思想,而且底层空间需要用户自己管理,稍不留神可能还会越界访问。标准库中的string类string类(了解)字符串是表示字符序列的类标准的字符串类提供了对此类对象的支持,其接口类似于标准字符容器的接口,但添加了专门用于操作单字节字符字符串的设计特性。string类是使用char(即作为原创 2022-04-18 17:05:29 · 388 阅读 · 13 评论 -
C++从入门到精通(第五篇) :C++模板初阶
1. 泛型编程如何实现一个通用的交换函数呢? 方法一:(函数重载)void Swap(int& left, int& right){ int temp = left; left = right; right = temp;}void Swap(double& left, double& right){ double temp = left; left = right; right = temp;}void Swap(char&原创 2022-04-16 14:16:33 · 216 阅读 · 0 评论 -
C++从入门到精通(第六篇) :C++内存管理
一、C/C++内存分布例:int globalVar = 1;static int staticGlobalVar = 1;void Test(){ static int staticVar = 1; int localVar = 1; int num1[10] = { 1, 2, 3, 4 }; char char2[] = "abcd"; const char* pChar3 = "abcd"; int* ptr1 = (int*)malloc(sizeof(int) * 4)原创 2022-04-16 14:16:48 · 203 阅读 · 4 评论 -
C++从入门到精通(第四篇) :C++的基础和灵魂:类和对象(下篇)
C++的基础和灵魂:类和对象(下篇)1. 再谈构造函数构造函数体赋值初始化列表explicit关键字2.static成员概念特性3.C++11 的成员初始化新玩法4. 友元友元函数友元类5.内部类概念及特性6. 再次理解封装7.再次理解面向对象1. 再谈构造函数构造函数体赋值在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值class Date{public: Date(int year, int month, int day) { _year = year;原创 2022-04-17 16:36:05 · 341 阅读 · 28 评论 -
C++从入门到精通(第三篇) :C++的基础和灵魂:类和对象(中篇)
类和对象(中篇)1.类的6个默认成员函数2. 构造函数3.析构函数4.拷贝构造函数5.赋值运算符重载运算符重载赋值运算符重载6.日期类的实现7.const成员const修饰类的成员函数取地址及const取地址操作符重载1.类的6个默认成员函数如果一个类中什么成员都没有,简称为空类。空类中什么都没有吗?并不是的,任何一个类在我们不写的情况下,都会自动生成下面6个默认成员函数。2. 构造函数在C语言数据结构时,创建结构变量我们经常需要自行调用结构初始化函数,否则可能会报错,为了避免忘记调用原创 2022-04-14 18:14:45 · 387 阅读 · 42 评论 -
C++从入门到精通(第二篇) :C++的基础和灵魂:类和对象(上篇)
一.面向过程和面向对象初步认识C语言是面向过程的,关注的是过程,分析出求解问题的步骤,通过函数调用逐步解决问题。C++是基于面向对象的,关注的是对象,将一件事情拆分成不同的对象,靠对象之间的交互完成。示例:网上购物系统面向过程:下单,接单,邮递面向对象:卖家,买家,快递公司之间的交互以及关系二.类的引入C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数。struct Student{//类型成员函数//初始化学生信息原创 2022-04-13 22:31:33 · 521 阅读 · 74 评论 -
C++从入门到精通(第一篇) :C++的入门(基础语法的整理)
文章目录一.C++关键字(C++98)二.命名空间命名空间定义命名空间使用三.C++输入&输出一.C++关键字(C++98)C++总计63个关键字,C语言32个关键字这里不做具体的讲解,只是了解下就可以了二.命名空间在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染,namespace关键字的出现就是针对这种问题的。解决命名冲突原创 2022-04-12 19:42:14 · 5583 阅读 · 44 评论