
C++
C++相关知识初步学习与总结
田怼怼
这个作者很懒,什么都没留下…
展开
-
C++11新特性
C++11能更好地用于系统开发和库开发、语法更加泛华和简单化、更加稳定和安全,不仅功能更强大,而且能提升程序员的开发效率。原创 2020-09-23 16:23:12 · 286 阅读 · 0 评论 -
C/C++内存管理
C/C++内存管理这一部分将会介绍下列这些主要内容:1、C/C++内存分布2、C语言中动态内存管理方式3、C++动态内存管理方式4、operator new与operator delete5、new与delete的实现原理6、定位new表达式7、常见面试题...原创 2020-06-04 16:45:51 · 166 阅读 · 0 评论 -
vector与list的区别
vector与list的区别原创 2020-05-06 23:21:08 · 1390 阅读 · 0 评论 -
虚函数相关问题
虚函数相关问题原创 2020-05-06 23:15:50 · 313 阅读 · 0 评论 -
详解布隆过滤器的原理、使用场景和优缺点
布隆过滤器1、 布隆过滤器的概念2、 布隆过滤器的插入与查找2.1 布隆过滤器的插入2.2 布隆过滤器的查找2.3 布隆过滤器产生误判的原因3、布隆过滤器的删除4、布隆过滤器优点5、布隆过滤器缺陷6、使用场景7、海量数据应用例题1、 布隆过滤器的概念布隆过滤器(BloomFilter)是一种紧凑型的、比较巧妙的概率型数据结构,特点是高效地插入和查询,可以用来告诉你 某样东西一定不存在或者可能...原创 2020-03-10 16:14:51 · 3693 阅读 · 0 评论 -
C++:位图总结
1、位图的概念位图(bitset)是一种常用的数据结构,常用在给一个很大范围的数,判断其中的一个数是不是在其中。在索引、数据压缩方面有很大的应用。位图是用数组实现的,数组的每一个元素的每一个二进制位都表示一个数据,0表示该数据不存在,1表示该数据存在如下图:一般来说一个位图所占的空间为512M,所以说要判断一个数是否在0~4294967295中需要的空间是512M(即一个位图)来解决。...原创 2020-03-09 22:23:49 · 589 阅读 · 0 评论 -
在C++中对仿函数的理解
文章转自:https://blog.youkuaiyun.com/yuhan61659/article/details/81356051先考虑一个简单的例子:假设有一个vector,你的任务是统计长度小于5的string的个数,如果使用count_if函数的话,你的代码可能长成这样: bool LengthIsLessThanFive(const string& str) { retu...转载 2020-03-08 17:22:03 · 203 阅读 · 0 评论 -
关联式容器(set、map)
STL容器分为序列式容器、关联式容器、容器适配器,具体分类如下图:关联式容器关联式容器也是用来存储数据的,与序列式容器不同的是,其里面存储的是**<key, value>结构的键值对**,在数据检索时比序列式容器效率更高。键值对:用来表示具有一一对应关系的一种结构,该结构中一般只包含两个成员变量key和value,key代表键值,value表示与key对应的信息。树形结构的...原创 2020-03-01 17:17:54 · 332 阅读 · 1 评论 -
list 总结
list的地城结构是双向链表,可以进行任意位置的插入和删除,相较于其他容器(vector、array、deque)效率更高list存在最大的缺陷就是不支持随机访问(在进行随机访问时list会有一些时间和空间上的开销,所以不建议使用list进行访问操作)list 的使用1、list的构造构造函数接口说明list ()构造空list (size_type n, ...原创 2020-02-28 17:19:49 · 207 阅读 · 0 评论 -
C++的类型转换
C语言的类型转换在C语言中存在隐式类型转换和显式类型转换举个栗子说明int main(){ int i = 10; double j = i;//隐式类型转换 int *p = &i; int address = (int)p;//显式强制类型转换}在C语言中显式强制类型转换:[格式:(需要转换的类型)]可以对任何类型进行转换,但是也存在一定的弊端,转换的可视性比较...原创 2020-02-27 21:33:59 · 190 阅读 · 0 评论 -
C++智能指针总结
智能指针的作用动态内存管理经常会出现两种问题:1、忘记释放内存,会造成内存泄漏;2、尚有指针引用内存的情况下就释放了它,就会产生引用非法内存的指针。这两种问题都会导致内存泄漏,那么智能指针的作用就是方式内存泄漏。智能指针是一个类模板,当超出了类的作用域时,类会自动调用析构函数,析构函数会自动释放资源。智能指针的使用及原理1、RAIIRAII(Resource Acquisition...原创 2020-02-26 14:20:38 · 231 阅读 · 0 评论 -
C++异常总结
C语言处理错误的方式终止程序缺陷:用户难以接受。如发生内存错误,除0错误时就会终止程序(如assert)。返回错误码缺陷:需要程序员自己去查找对应的错误。如系统的很多库的接口函数都是通过把错误码放到errno中,表示错误。C 标准库中 setjmp 和 longjmp 组合。C++异常概念当一个函数发现自己无法处理的错误时就可以抛出异常,让函数的直接或间接的调用者处理这个错误。...原创 2020-02-20 23:35:21 · 359 阅读 · 0 评论 -
C++多态总结
俗话说,一千个读者就有一千个哈姆雷特。这就类似于多态,不同的对象对完成同一个行为会表现出不同的状态。多态的概念多态就是不同对象去完成某个行为,会产生不同的状态。多态的定义及实现1、多态的构成条件必须通过基类的指针或者引用调用虚函数;被调用的函数必须是虚函数(有virtual关键字);派生类必须对基类的虚函数进行重写(函数名、返回值类型、参数列表均相同)。这三者缺一不可,若...原创 2020-02-19 15:51:41 · 291 阅读 · 0 评论 -
C++经典面试题汇总(更新中...)
C++相关经典面试题总结原创 2020-02-17 22:41:00 · 178 阅读 · 0 评论 -
vector 总结
1、vector是表示可变大小数组的序列容器;2、vector存储元素是采用连续存储空间,可利用下标访问vector中的元素;3、vector是一个能够存放任意类型的动态数组,能够增加和压缩数据;4、vector是一个类模板,不是一种数据类型。可用来定义任意多种数据类型。vector类型的每一种都指定了其保存元素的类型。因此vector 等都是数据类型。vector的定义1、初始化v...原创 2020-02-13 19:31:00 · 358 阅读 · 0 评论 -
深拷贝与浅拷贝
拷贝可分为深拷贝和浅拷贝,从字面意思来看,浅拷贝就是把原来的内容复制,但是内存并不发生改变,改变复制后的内容原来的内容也会发生改变;而深拷贝是开辟了新的内存空间,改变复制后的内容原来的内容不会发生改变。假设原有内容为A,复制的内容是B,当B改变时:A发生改变,则此次为浅拷贝;A不发生改变,则此次为深拷贝。浅拷贝只是将对象中的值拷贝过来,会发生多个对象共用一份资源,当某个对象发生资源释放...原创 2020-02-11 19:51:37 · 127 阅读 · 0 评论 -
模板2
非类型模板参数模板参数分为:类型形参和非类型形参类型形参:出现在模板参数列表中,跟在class或者typename之后的参数类型名称。非类型形参:用一个常量作为类(函数)模板的一个参数,在类(函数)模板中可将该参数当成常量来使用。注:① 浮点数、类对象以及字符串是不允许作为非类型模板参数的。②非类型的模板参数必须在编译期就能确认结果。模板的特化在原模板类的基础上,针对特殊类型所进...原创 2020-02-10 18:51:16 · 102 阅读 · 0 评论 -
模板1
泛型编程是指编写与类型无关的通用代码,可以提高代码的复用性。模板是泛型编程的基础,分为函数模板和类模板。函数模板1、函数模板的格式:template<typename T1, typename T2, ...>返回值类型 函数名(参数列表){}其中typename为关键字,也可以是class(不能是struct)2、函数模板的实例化用不同的类型使用函数模板时,...原创 2020-02-10 17:35:56 · 91 阅读 · 0 评论 -
C++抽象类总结
一、抽象类的定义包含纯虚函数的类称为抽象类,而且抽象类不能实例化对象。(不能是实例化为具体的类)纯虚函数:在虚函数后面写上=0;例如:class Person {public: virtual void test() = 0;//纯虚函数};class Student : public Person {public: virtual void test() { co...原创 2019-12-06 21:03:25 · 551 阅读 · 0 评论 -
const的用法
一、const只能修饰输入参数1>如果输入参数为“指针传递”,加上const可以防止意外的改动该指针,起到保护的作用2>如果输入参数为“值传递”,函数会自动产生临时变量用于赋值该参数,不需要保护,故不需要加const3>对于非内部数据类型的参数时,可以用“引用传递”来提高效率,此时防止参数被修改,需要加上const如果是内部类型的参数,则不需要用“引用传递”二、用con...原创 2019-11-06 18:09:16 · 260 阅读 · 0 评论 -
C++继承总结
一、什么是继承继承是指一个类可以继承另一个类内的内容作用:提高代码的复用性书写格式class Test : public TestBase{};其中TestBase表示基类(父类),Test表示派生类(子类),public表示继承方式在继承中有三种继承方式,分别为public:可继承,可访问protected:可继承,不可访问private:不可继承,不可访问子类...原创 2019-11-05 10:20:20 · 106 阅读 · 0 评论 -
string 总结
一、string的初始化1、在使用string的过程中,需要添加头文件,即#include<string>切记,不是<string.h>2、string类是一个模板类,在使用过程中应该还要加上名字空间,即using namespace std;3、声明字符串变量string str;二、string类常用接口说明1、string类对象的常见构造1&...原创 2019-09-20 13:19:41 · 298 阅读 · 0 评论 -
默认成员函数
一、构造函数1、特点它是一个特殊的成员函数,它不存在返回值,名字类名相同,在实例化对象的时候自动调用;系统会自动提供一个默认的构造函数(1),如果自己实现了一个构造函数,则系统不再提供默认构造函数;构造函数可以存在参数,它与其他构造函数是以函数重载的方式共同存在;构造函数不能直接传入本类对象,必须使用引用或指针。书写格式( : 后面的是初始化列表)Poker():...原创 2019-09-08 21:20:56 · 128 阅读 · 0 评论 -
浅谈构造函数
为什么需要构造函数int main(){ int i; printf("%d\n"); system("pause"); return 0;}在上面这段代码中,i并没有初始化,但是它可以通过编译,而且每次运行出的结果也一样(按理来说,应该是一个随机数),为什么会这样呢?因为在C++中有一个默认的构造函数来控制对象的初始化。首先来说一说构造函数的特点:构造函数没有返回值构造...原创 2019-08-29 19:49:19 · 271 阅读 · 0 评论 -
类和对象
1、结构体在C和C++的不同1>在C++中,在结构体中定义变量不需要加上struct,而在C语言中不行;2>在C++中,可以定义空结构体,大小为1,而在C语言中不行;3>在C++中,可以在结构体中声明甚至实现函数,在C中只能放函数指针;4>在C++中,成员函数直接可以访问本结构的成员变量而无需传入,在C中函数和结构并无直接关联。*成员函数不影响结构体的大小因为成...原创 2019-08-28 14:50:34 · 134 阅读 · 0 评论 -
C++基础
一、命名空间关键字为namespace特性1、名字空间可以解决函数、全局变量名重复的问题,包在不同的名字空间里的重复函数实际是两个完全无关的函数;2、可以嵌套使用,嵌套内部和外部没有任何关系;3、名字空间允许重名,但在编译器会合并成一个命名空间;4、名字空间是来定义作用域的,它解决了C语言中,只能用文件来划分作用域的缺陷。使用using关键字,可以引用一个名字空间,使其内容仅自己可见...原创 2019-08-28 14:03:40 · 73 阅读 · 0 评论