unordered_map 和 unordered_multimap 容器的内部和 map 容器一样,存储的都是键值对, 以 pair 类型存储。 unordered_map 是无序映射容器,不会根据元素的 key 进行...
队列 : 先进先出,按照我们添加元素的顺序来决定优先级队列 : 并不是按照元素的添加顺序来访问,而是按照优先级来访问
vector 容器叫做动态数组,其大小可以随着元素的增长而变化,创建得时候不需要指定大小。vector 容器和 array 容器一样使用一块连续的内存空间来存储。 动态增长原理:1. 当添加元素的时候,如果空间不足,此时...
array 是一个数组,对 C-style 的数组的封装(int arr[] = {10, 20, 30}) 为什么C++要对 C 风格的数组进行封装?而不是直接使用C风格数组?array 是对C数组封装,array 是...
什么是链表?链表是由一些列节点组成的,每一个阶段包含数据域、指针域,每个节点的内存都是独立,使用的是非连续的内存。 链表分为:单向链表、双向链表、循环链表单向链表的开销最低,空间只需要一个指针即可,从操作角度:单向链表添...
STL 中的迭代器有以下几种:输入迭代器、输出迭代器、正向迭代器、双向迭代器、随机访问迭代器。1. 输入迭代器:一次只能读取一个元素,只能向前移动,支持:++、==、!=、(只读) 2. 输出迭代器:一次只能写一个元素,...
函数对象适配器主要用于对函数、函数对象进行适配(转换),使得原本不符合接口需求的函数、函数对象变得符合要求。比如:我们有一个 2 个参数的函数对象,但是我们需要 1 个参数的函数对象,此时可以通过函数对象适配器进行转换。...
std::function 是 C++11 标准库中的一个类模板,用于封装可调用对象(函数、函数指针、成员函数指针、Lambda 表达式等),并提供一种统一的方式来管理它们。 通过 std::function,你可以将可...
可以使用C对变量中的个别位进行操作。您可能对人们想这样做的原因感到奇怪。这种能力有时确实是必须的,或者至少是有用的。C提供位的逻辑运算符和移位运算符。 1. 位运算符 位运算符 取反 ~,对于每个位按位取反。 位与 &a...
C99 提供一个成为 伸缩性数组成员 的特性。利用这一特性可以声明结构体的最后一个成员具有特殊的属性。 该数组成员的特性:1. 该成员可存在,也可不存在,当不存在时,并不占用结构体大小。2. 使用这个伸缩的成员,使它可...
浮点小数是程序中经常使用的一种数据类型,其使用非常广泛,特别是在科学计算、工程领域以及计算机图形学、人工智能等领域。 1. 原理 在计算机中,浮点数常常采用 IEEE 754 标准来表示。这个标准定义了两种浮点数格式:单...
C++ 是一种静态类型语言,数据类型在编译时确定。但在有些场景下,编译时无法确定数据类型,需要在运行时才能确定。RTTI(Run Time Type Identification,运行时类型识 别)就是一种能够在运行时动...
位域也叫做位段(bit field),使用位域能够节省结构体数据内存的占用。接下来,我们从以下几个方面来讲解下位域: 1. 位域的作用 2. 位域的语法 3. 位域的存储