摘要:
#一、简介 关联容器在存储时是以关键字key为下标进行存储的,标准的STL关联容器分为set和map两大类,之后的衍生版本有multiset和multimap,它们的区别是在存储时是否容许出现关键字key相同的情况。这些容器的底层机制均以RB-tree(红黑树)完成。 ##1、对组pair类型提供的 阅读全文
posted @ 2022-03-10 23:07
底层逻辑
阅读(135)
评论(0)
推荐(0)
摘要:
#一、简介 Vector中所采用的数据结构非常简单:线性连续空间。当分配空间被占满而仍然需要添加元素时,vector便会进行一场空间重新配置的大工程!在这里,程序员需要注意的是,一旦引起空间重新配置,之前指向原vector的所有迭代器就都失效了,这一点在工程中容易引起bug。 List则对空间的运用 阅读全文
posted @ 2022-03-10 21:53
底层逻辑
阅读(128)
评论(0)
推荐(0)
摘要:
#一、基本概念 STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C程序库。它被容纳于C标准程序库(C++ Standard Library)中,是ANSI/ISO C标准中最新的也是极具革命性的一部分。该库包含了诸多在计算机科学领域里所常用的基 阅读全文
posted @ 2022-03-10 21:38
底层逻辑
阅读(514)
评论(0)
推荐(0)
摘要:
对于程序中的变量名称,有人主张尽量让变量名简单易懂。在定义变量时,不仅让变量名称易于理解,而且数据类型、属性能够一眼看出,这种观念的命名称为匈牙利命名。 匈牙利命名法是一种编程时的命名规范。这种命名法的出发点是把变量名按:属性+类型+对象描述的顺序组合起来,以使程序员作变量时对变量的类型和其它属性有 阅读全文
posted @ 2022-03-10 21:26
底层逻辑
阅读(159)
评论(0)
推荐(0)
摘要:
#一、前向声明 在C++中,类需要先定义,而后才能被实例化,但是实际存在一种场景是:两个类需要相互引用或相互成为类中的子对象成员时,就无法先定义使用,在编译环节就出现错误导致编译失败,这时就需要用到前向声明,此外,前向声明的类不能被实例化。 【示例】 #ifndef _A_H #define _A_ 阅读全文
posted @ 2022-03-10 21:21
底层逻辑
阅读(318)
评论(0)
推荐(0)
摘要:
#内存泄露 ##1、内存泄露的定义 一般我们常说的内存泄漏是指堆内存的泄漏。堆内存是指程序从堆中分配的,大小任意的(内存块的大小可以在程序运行期决定),使用完后必须显示释放的内存。 应用程序一般使用malloc,realloc,new等函数从堆中分配到一块内存,使用完后,程序必须负责相应的调用fre 阅读全文
posted @ 2022-03-10 21:15
底层逻辑
阅读(72)
评论(0)
推荐(0)
摘要:
#C内存管理 #一、内存分配方式 在C中内存被分为5个区,分别是:栈区、堆区、自由存储区、全局/静态存储区和常量存储区。 1、栈区 在执行函数时,函数内局部变量的存储单元都可一在栈上创建,函数执行结束时,这些存储单元自动被释放。栈内存分配运算内置与处理器指令集中,效率很高,当分配的内存容量有限。 2 阅读全文
posted @ 2022-03-10 21:10
底层逻辑
阅读(64)
评论(0)
推荐(0)
摘要:
#一、单例模式 单例模式,可以说设计模式中最常应用的一种模式了,据说也是面试官最喜欢的题目。但是如果没有学过设计模式的人,可能不会想到要去应用单例模式,面对单例模式适用的情况,可能会优先考虑使用全局或者静态变量的方式,这样比较简单,也是没学过设计模式的人所能想到的最简单的方式了。 一般情况下,我们建 阅读全文
posted @ 2022-03-10 20:57
底层逻辑
阅读(201)
评论(0)
推荐(0)
摘要:
#C++ 模板 模板是泛型编程的基础,泛型编程即以一种独立于任何特定类型的方式编写代码。 ##1、函数模板 float swap(float &a, float &b){float temp = a;a = b; b=temp;} char swap(char &a, char &b){char t 阅读全文
posted @ 2022-03-10 18:55
底层逻辑
阅读(48)
评论(0)
推荐(0)
摘要:
#一、指针 int *q; int *q=&p; 这里p为int类型的变量,&p就是p的内存地址,*q是一个int类型的变量(是一个值),q为指针是地址,int q=&p;把p的地址赋给了指针q,所以q就等于p的值=12,而q=&p,因为指针本身也是变量,所以&q就是指针q的内存地址。 注意: 不能 阅读全文
posted @ 2022-03-10 18:44
底层逻辑
阅读(51)
评论(0)
推荐(0)
摘要:
#一、静态成员 我们可以使用 static 关键字来把类成员定义为静态的。当我们声明类的成员为静态时,这意味着无论创建多少个类的对象,静态成员都只有一个副本。 静态成员在类的所有对象中是共享的。如果不存在其他的初始化语句,在创建第一个对象时,所有的静态数据都会被初始化为零。我们不能把静态成员的初始化 阅读全文
posted @ 2022-03-10 18:33
底层逻辑
阅读(174)
评论(0)
推荐(0)
摘要:
面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用! 封装:将一类事物所共有的属性和行为方法进行总结,封装在一个类中。该类的形成过程称为封装,该封装的类实 阅读全文
posted @ 2022-03-10 18:25
底层逻辑
阅读(111)
评论(0)
推荐(0)
摘要:
#一、C++数据抽象 ##1、定义 数据抽象是指,只向外界提供关键信息,并隐藏其后台的实现细节,即只表现必要的信息而不呈现细节。数据抽象是一种依赖于接口和实现分离的编程(设计)技术。 C++类为数据抽象提供了可能。它们向外界提供了大量用于操作对象数据的公共方法,也就是说,外界实际上并不清楚类的内部实 阅读全文
posted @ 2022-03-10 18:10
底层逻辑
阅读(189)
评论(0)
推荐(0)
摘要:
#一、C类 & 对象 C 在 C 语言的基础上增加了面向对象编程,C++ 支持面向对象程序设计。类是 C++ 的核心特性,通常被称为用户定义的类型。 类用于指定对象的形式,它包含了数据表示法和用于处理数据的方法。类中的数据和方法称为类的成员。函数在一个类中被称为类的成员。 ##1、定义C++ 类 定 阅读全文
posted @ 2022-03-10 18:03
底层逻辑
阅读(123)
评论(0)
推荐(0)