![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++入门学习
文章平均质量分 90
C++的基本语法等
"派派"
这个作者很懒,什么都没留下…
展开
-
工厂与观察者模式
通过一个加工厂,在这个工厂中添加对应材料,我们就可以得到想要的东西,在程序设计中,这种模式就叫做工厂模式,工厂生成出的产品就是某个类的实例,也就是对象。关于工厂模式一共有三种,分别是:简单工厂模式、工厂模式、抽象工厂模式。原创 2023-09-27 18:25:43 · 357 阅读 · 0 评论 -
C++11--线程库的认识
目录thread线程的构造方式相关成员函数join与detach线程传参 互斥量mutexmutexLocks 原子性操作库条件变量 它是不支持拷贝构造,赋值的,但是可以支持移动构造,移动赋值。还可以直接创建无参的对象。它的有参的构造是支持可变参数模板的,:可调用对象,比如函数指针、仿函数、lambda表达式、被包装器包装后的可调用对象等。:调用可调用对象fn时所需要的若干参数。例如:使用构造函数:使用lambda:也可以使用移动构造:相关成员函数 例如:常用的函数但上面这些函数都是需原创 2023-05-02 21:23:42 · 479 阅读 · 0 评论 -
位图与布隆过滤器
先看一个问题,给40亿个不重复的,未排序的无符号整数。再给一个无符号整数,如何快速判断一个数是否在这40。方案:1.遍历,时间复杂度O(N)2.排序(O(NlogN)),利用二分查找: logN3.位图解决数据是否在给定的整形数据中,结果是在或者不在,刚好是两种状态,那么可以使用一个二进制比特位来代表数据是否存在的信息,如果二进制比特位为1,代表存在,为0代表不存在。看这张图:一个char类型的数据是8位,可以用这8个比特位来标识数据是否存在。原创 2022-10-06 20:21:09 · 310 阅读 · 2 评论 -
C++ IO流
在C语言中,如何用一个整形变量的数据转化为字符串格式,方法:1.使用itoa()函数2.使用sprintf()函数int a = 10;//将整型的a转化为字符串格式存储在字符串arr当中但是在两个函数在转化时,都需要先给出保存结果的空间,而空间的大小是不太好界定的,除此之外,转化格式不匹配时,可能还会得到错误的结果甚至程序崩溃。在C++中,我们可以使用stringstream类对象来解决这些问题。string str;原创 2023-02-27 20:56:33 · 282 阅读 · 0 评论 -
C++异常介绍
可以定义一套继承的规范异常体系,抛出继承的派生类,捕获一个基类即可。例如:定义一个父类,两个子类。发生异常,抛出子类,在子类中填充错误信息,用父类接受,通过多态实现,打印错误信息。};void AAA(){//若发生错误}void BBB(){//若发生错误}{原创 2022-12-09 19:08:28 · 769 阅读 · 1 评论 -
特殊类的设计(含单例模式)
首先要知道拷贝的场景:拷贝构造函数以及赋值运算符重载,想要让一个类禁止拷贝,只需让该类不能调用拷贝构造函数以及赋值运算符重载即可。 方法1:将这两个函数只声明,不定义(防止编译器默认生成,但不能防止用户可在外面定义),或者把这两个函数设置为私有。方法2:C++11的方式将这两个函数删除(用delete)。例如:二.只能在堆上创建对象1. 将类的构造函数私有,拷贝构造声明成私有。防止别人调用拷贝在栈上生成对象。 2. 提供一个静态的成员函数,在该静态成员函数中完成堆对象的创建。例如:原创 2022-12-08 10:29:49 · 306 阅读 · 0 评论 -
C++的类型转换
将变量的类型声明为表达式指定的类型)的简称,即:运行时类型识别。原创 2022-10-13 19:43:56 · 456 阅读 · 0 评论 -
智能指针介绍
智能指针是什么样的指针呢?进来看看吧原创 2022-10-03 17:31:46 · 898 阅读 · 0 评论 -
lambda表达式与包装器详解
lambda与包装器入门介绍原创 2022-10-02 09:33:43 · 604 阅读 · 0 评论 -
C++11介绍
1.左值引用只能引用左值,不能引用右值。2.但是const左值引用既可引用左值,也可引用右值。原创 2022-10-01 12:09:44 · 1673 阅读 · 0 评论 -
哈希的介绍及实现
二者的用法与set和map是一样的,只不过不会对其数据进行排序。{{}}结果:99 3 9 5 2 4{dict.insert(make_pair("sort", "排序"));dict.insert(make_pair("left", "左边"));dict.insert(make_pair("left", "剩余"));dict["left"] = "剩余";dict["string"] = "字符串";{}}结果:sort-排序。原创 2022-09-21 15:28:08 · 938 阅读 · 0 评论 -
set和map的模拟
STL中的set和map的底层都是用红黑树模拟实现的。但set每次只存储一个值,而map存储的是键值对,那是否要写两份红黑树的代码呢?可怕的红黑树_"派派"的博客-CSDN博客,实现是与map相似的。原创 2022-08-30 14:09:17 · 170 阅读 · 0 评论 -
set和map使用讲解
一篇文章搞懂set,map的使用原创 2022-08-09 10:00:00 · 805 阅读 · 0 评论 -
stack-queue
1.stack是作为容器适配器被实现的,容器适配器即是对特定类封装作为其底层的容器,并提供一组特定的成员函数来访问其元素2.stack的底层容器可以是任何标准的容器类模板或者一些其他特定的容器类,这些容器类应该支 持以下操作empty:判空操作back:获取尾部元素操作push_back:尾部插入元素操作pop_back:尾部删除元素操作3.标准容器vector、deque、list均符合这些需求,默认情况下,如果没有为stack指定特定的底层容器默认情况下使用deque。......原创 2022-08-07 12:52:58 · 100 阅读 · 0 评论 -
C++多态
概念多态是在不同继承关系的类对象,去调用同一函数,产生了不同的行为。在继承中要构成多态还有两个条件1.必须通过基类的指针或者引用调用虚函数2.被调用的函数必须是虚函数,且派生类必须对基类的虚函数进行重写虚函数virtual修饰的类成员函数虚函数的重写(覆盖)派生类中有一个跟基类完全相同的虚函数(即派生类虚函数与基类虚函数的返回值类型、函数名字、参数列表完全相同),称子类的虚函数重写了基类的虚函数。public补充虚函数的重写有两个例外1.协变(析构函数的重写。......原创 2022-07-28 09:20:51 · 547 阅读 · 1 评论 -
list的模拟实现
1.list是可以在常数范围内在任意位置进行插入和删除的序列式容器,并且该容器可以前后双向迭代。2.list的底层是双向链表结构,双向链表中每个元素存储在互不相关的独立节点中,在节点中通过指针指向其前一个元素和后一个元素。3.listiterator与string,vector不同,并不是是一个原生指针,可认为是一个结点的指针。.....................原创 2022-07-22 11:00:31 · 347 阅读 · 0 评论 -
C++继承详解
一篇文章入门c++继承原创 2022-07-21 12:22:35 · 457 阅读 · 1 评论 -
vector介绍及底层原理
1.vector是表示可变大小数组的序列容器。2.就像数组一样,vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vecto的元素进行访问,和数组一样高效。但是又不像数组,它的大小是可以动态改变的,而且它的大小会被容器自动处理函数有进行学习。......原创 2022-07-17 20:41:58 · 2800 阅读 · 0 评论 -
string类的介绍及模拟实现
你知道string的底层实现吗原创 2022-07-15 20:51:16 · 244 阅读 · 0 评论 -
模板详解入门
一篇文章,彻底搞懂c++模板原创 2022-06-05 12:00:41 · 160 阅读 · 0 评论 -
new-delete的介绍
目录1.new-delete1.1.操作内置类型2.2.操作自定义类型2.operator new与operator delete函数2.1operator new-operator delete2.2new和delete的实现原理3.malloc/free和new/delete的区别1.new-deleteC语言内存管理方式在C++中可以继续使用,但C++又提出了自己的内存管理方式:通过new和delete操作符进行动态内存管理。1.1.操作内置类型..原创 2022-05-31 20:23:26 · 145 阅读 · 0 评论 -
类和对象——下
1.初始化列表1.概念在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。虽然上述构造函数调用之后,对象中已经有了一个初始值,但是不能将其称作为类对象成员的初始化,构造函数体中的语句只能将其称作为赋初值,而不能称作初始化。因为初始化只能初始化一次,而构造函数体内可以多次赋值。初始化列表:以一个冒号开始,接着是一个以逗号分隔的数据成员列表,每个"成员变量"后面跟一个放在括号中的初始值或表达式。1. 每个成员变量在初始化列表中只能出现一次(初始化只能初始.原创 2022-05-30 11:48:57 · 126 阅读 · 0 评论 -
类与对象——中
1.介绍任何一个类,在我们不写的情况下,都会生成默认的六个成员函数2. 构造函数构造函数是一个特殊的成员函数,名字与类名相同,创建类类型对象时由编译器自动调用,保证每个数据成员都有 一个合适的初始值,并且在对象的生命周期内只调用一次。............原创 2022-05-19 08:34:54 · 242 阅读 · 0 评论 -
类与对象——上
目录1.类的引入2.类的定义3.类的访问限定符及封装1.访问限定符2.封装3.类的作用域4.类的实例化5.类对象模型1.如何计算类对象的大小6.this指针 1.this指针的引出2 .this指针的特性1.类的引入C语言中,结构体中只能定义变量,在C++中,结构体内不仅可以定义变量,也可以定义函数struct Student{ void SetStudentInfo(const char* name, const char...原创 2022-05-15 20:47:58 · 195 阅读 · 0 评论 -
C++入门介绍
1. C++关键字如图:简单认识下2. 命名空间在C/C++中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字 污染,namespace关键字的出现就是针对这种问题的。1.命名空间定义定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名 空间的成员。1.命名空间中的内容,既可以定义变量,也可以定义函原创 2022-05-12 12:46:26 · 350 阅读 · 1 评论