-
C++ STL unordered_map删去元素 erase 和clear
所属栏目:[语言] 日期:2022-07-15 热度:98
C++ STL 标准库为了方便用户可以随时删除 unordered_map 容器中存储的键值对,unordered_map 容器类模板中提供了以下 2 个成员方法: erase():删除 unordered_map 容器中指定的键值对; clear():删除 unordered_map 容器中所有的键值对,即清空容器。 本[详细]
-
C++ STL 反向迭代器适配器 reverse_iterator 说明
所属栏目:[语言] 日期:2022-07-15 热度:74
我们知道,C++ 11 的 STL 标准库提供有 4 种迭代器适配器,本节开始将一一介绍它们的功能和用法,这里先讲解反向迭代器适配器。 反向迭代器适配器(reverse_iterator),可简称为反向迭代器或逆向迭代器,常用来对容器进行反向遍历,即从容器中存储的最后[详细]
-
C++ STL迭代器适配器是啥
所属栏目:[语言] 日期:2022-07-15 热度:182
通过学习 C++ STL 标准库中的容器我们知道,无论是序列式容器还是关联式容器(包括哈希容器),要想遍历容器中存储的数据,就只能用使用该容器模板类中提供的迭代器。 《C++ STL迭代器》一节提到,C++ STL 标准库中迭代器大致分为 5 种类型,分别是输入迭[详细]
-
C++ STL priority_queue容器适配器剖析
所属栏目:[语言] 日期:2022-07-15 热度:104
priority_queue 容器适配器模拟的也是队列这种存储结构,即使用此容器适配器存储元素只能从一端进(称为队尾),从另一端出(称为队头),且每次只能访问 priority_queue 中位于队头的元素。 但是,priority_queue 容器适配器中元素的存和取,遵循的并不是[详细]
-
C++ STL queue容器适配器解析
所属栏目:[语言] 日期:2022-07-15 热度:188
和 stack 栈容器适配器不同,queue 容器适配器有 2 个开口,其中一个开口专门用来输入数据,另一个专门用来输出数据。 这种存储结构最大的特点是,最先进入 queue 的元素,也可以最先从 queue 中出来,即用此容器适配器存储数据具有先进先出(简称 FIFO )[详细]
-
C++ stack STL stack 容器适配器用法简介
所属栏目:[语言] 日期:2022-07-15 热度:92
stack 栈适配器是一种单端开口的容器(如图 1 所示),实际上该容器模拟的就是栈存储结构,即无论是向里存数据还是从中取数据,都只能从这一个开口实现操作。 创建 stack 适配器,大致分为如下几种方式。 1) 创建一个不包含任何元素的 stack 适配器,并采[详细]
-
什么叫做适配器 C++ STL容器适配器详解
所属栏目:[语言] 日期:2022-07-15 热度:96
在详解什么是容器适配器之前,初学者首先要理解适配器的含义。 其实,容器适配器中的适配器,和生活中常见的电源适配器中适配器的含义非常接近。我们知道,无论是电脑、手机还是其它电器,充电时都无法直接使用 220V 的交流电,为了方便用户使用,各个电器[详细]
-
C++ STL unordered_multiset容器说明
所属栏目:[语言] 日期:2022-07-15 热度:98
前面章节详细地介绍了 unordered_set 容器的特定和用法,在此基础上,本节再介绍一个类似的 C++ STL 无序容器,即 unordered_multiset 容器。 所谓类似,指的是 unordered_multiset 容器大部分的特性都和 unordered_set 容器相同,包括: unordered_multis[详细]
-
C++ STL unordered_set容器完全战略
所属栏目:[语言] 日期:2022-07-15 热度:106
我们知道,C++ 11 为 STL 标准库增添了 4 种无序(哈希)容器,前面已经对 unordered_map 和 unordered_multimap 容器做了详细的介绍,本节再讲解一种无序容器,即 unordered_set 容器。 unordered_set 容器,可直译为无序 set 容器,即 unordered_set 容[详细]
-
C++ STL unordered_multimap容器细说
所属栏目:[语言] 日期:2022-07-15 热度:90
C++ STL 标准库中,除了提供有 unordered_map 无序关联容器,还提供有和 unordered_map 容器非常相似的 unordered_multimap 无序关联容器。 和 unordered_map 容器一样,unordered_multimap 容器也以键值对的形式存储数据,且底层也采用哈希表结构存储各个[详细]
-
C++11支撑函数模板的默认模板参数
所属栏目:[语言] 日期:2022-07-14 热度:53
在 C++98/03 标准中,类模板可以有默认的模板参数,如下: template typename T, typename U = int, U N = 0 struct Foo { // ... }; 但是却不支持函数的默认模板参数: template typename T = int // error in C++98/03: default template arguments void[详细]
-
C++11 tuple元组细说
所属栏目:[语言] 日期:2022-07-14 热度:116
C++11 标准新引入了一种类模板,命名为 tuple(中文可直译为元组)。tuple 最大的特点是:实例化的对象可以存储任意数量、任意类型的数据。 tuple 的应用场景很广泛,例如当需要存储多个不同类型的元素时,可以使用 tuple;当函数需要返回多个数据时,可以[详细]
-
C++11列表初始化 统一了初始化方法
所属栏目:[语言] 日期:2022-07-14 热度:191
我们知道,在 C++98/03 中的对象初始化方法有很多种,请看下面的代码: //初始化列表 int i_arr[3] = { 1, 2, 3 }; //普通数组 struct A { int x; struct B { int i; int j; } b; } a = { 1, { 2, 3 } }; //POD类型 //拷贝初始化(copy-initialization) i[详细]
-
C++11 lambda匿名函数用法解说
所属栏目:[语言] 日期:2022-07-14 热度:126
lambda 源自希腊字母表中第 11 位的 ,在计算机科学领域,它则是被用来表示一种匿名函数。所谓匿名函数,简单地理解就是没有名称的函数,又常被称为 lambda 函数或者 lambda 表达式。 继 Python、Java、C#、PHP 等众多高级编程语言都支持 lambda 匿名函数[详细]
-
C++11非受限结合体 union
所属栏目:[语言] 日期:2022-07-14 热度:190
在 C/C++ 中,联合体(Union)是一种构造数据类型。在一个联合体内,我们可以定义多个不同类型的成员,这些成员将会共享同一块内存空间。老版本的 C++ 为了和C语言保持兼容,对联合体的数据成员的类型进行了很大程度的限制,这些限制在今天看来并没有必要[详细]
-
C++11 for循环 介于范围的循环 详解
所属栏目:[语言] 日期:2022-07-14 热度:61
C++ 11标准之前(C++ 98/03 标准),如果要用 for 循环语句遍历一个数组或者容器,只能套用如下结构: for(表达式 1; 表达式 2; 表达式 3){ //循环体 } 例如,下面程序演示了用上述结构遍历数组和容器的具体实现过程(实例一): #include iostream #inclu[详细]
-
C++11 constexpr 验证是不是为常量表达式
所属栏目:[语言] 日期:2022-07-14 热度:119
constexpr 是 C++ 11 标准新引入的关键字,不过在讲解其具体用法和功能之前,读者需要先搞清楚 C++ 常量表达式的含义。 所谓常量表达式,指的就是由多个(1)常量组成的表达式。换句话说,如果表达式中的成员都是常量,那么该表达式就是一个常量表达式。这[详细]
-
C++11 long long超长整形解析
所属栏目:[语言] 日期:2022-07-14 热度:73
C++ 11 标准中,基于整数大小的考虑,共提供了如表 1 所示的这些数据类型。与此同时,标准中还明确限定了各个数据类型最少占用的位数。 说道 C++ 标准委员会将 long long 整形写入 C++ 11 标准中,其实早在 1995 年,就有人提议将 long long 整形写入 C++[详细]
-
C++11右值引用 一看即明白
所属栏目:[语言] 日期:2022-07-14 热度:87
《C++11是什么》一节中提到,在 C++98/03 标准的基础上,C++11 标准对 C++ 语言增添了约 140 个新特性。本节要讲的右值引用就是众多新特性中的一个,同时也是最重要的特性之一。 很多初学者都感觉右值引用晦涩难懂,其实不然。右值引用只不过是一种新的 C+[详细]
-
C++11 move函数 将左值强制变换为右值
所属栏目:[语言] 日期:2022-07-14 热度:118
通过学习 《C++11移动构造函数》一节我们知道,C++11 标准中借助右值引用可以为指定类添加移动构造函数,这样当使用该类的右值对象(可以理解为临时对象)初始化同类对象时,编译器会优先选择移动构造函数。 注意,移动构造函数的调用时机是:用同类的右值[详细]
-
C++序列式容器 STL序列式容器 是啥
所属栏目:[语言] 日期:2022-07-14 热度:133
所谓序列容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。 需要注意的是,序列容器只是一类容器的统称,并不指具体的某个容器,[详细]
-
迭代器是什么 C++ STL迭代器 iterator 用法细说
所属栏目:[语言] 日期:2022-07-14 热度:126
无论是序列容器还是关联容器,最常做的操作无疑是遍历容器中存储的元素,而实现此操作,多数情况会选用迭代器(iterator)来实现。那么,迭代器到底是什么呢? 常用的迭代器按功能强弱分为输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭代器[详细]
-
C++ STL容器叫做什么
所属栏目:[语言] 日期:2022-07-14 热度:195
在实际的开发过程中,合理组织数据的存取与选择处理数据的算法同等重要,存取数据的方式往往会直接影响到对它们进行增删改查操作的复杂程度和时间消耗。事实上,当程序中存在对时耗要求很高的部分时,数据结构的选择就显得尤为重要,有时甚至直接影响程序[详细]
-
C++11 shared_ptr智能指针 超级具体
所属栏目:[语言] 日期:2022-07-14 热度:128
在实际的 C++ 开发中,我们经常会遇到诸如程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的。比如: 有些内存资源已经被释放,但指向它的指针并没有改变指向(成为了野指针),并且后续还在使[详细]
-
C++11引用限定符的用处
所属栏目:[语言] 日期:2022-07-14 热度:154
在《C++右值引用》一节中,我们给您介绍了左值和右值。值得一提的是,左值和右值的区分也同样适用于类对象,本节中将左值的类对象称为左值对象,将右值的类对象称为右值对象。 默认情况下,对于类中用 public 修饰的成员函数,既可以被左值对象调用,也可[详细]