-
C++ STL 反向迭代器适配器 reverse_iterator 说明
所属栏目:[语言] 日期:2022-07-15 热度:125
我们知道,C++ 11 的 STL 标准库提供有 4 种迭代器适配器,本节开始将一一介绍它们的功能和用法,这里先讲解反向迭代器适配器。 反向迭代器适配器(reverse_iterator),可简称为反向迭代器或逆向迭代器,常用来对容器进行反向遍历,即从容器中存储的最后[详细]
-
C++ STL priority_queue容器适配器剖析
所属栏目:[语言] 日期:2022-07-15 热度:77
priority_queue 容器适配器模拟的也是队列这种存储结构,即使用此容器适配器存储元素只能从一端进(称为队尾),从另一端出(称为队头),且每次只能访问 priority_queue 中位于队头的元素。 但是,priority_queue 容器适配器中元素的存和取,遵循的并不是[详细]
-
C++ STL queue容器适配器解析
所属栏目:[语言] 日期:2022-07-15 热度:78
和 stack 栈容器适配器不同,queue 容器适配器有 2 个开口,其中一个开口专门用来输入数据,另一个专门用来输出数据。 这种存储结构最大的特点是,最先进入 queue 的元素,也可以最先从 queue 中出来,即用此容器适配器存储数据具有先进先出(简称 FIFO )[详细]
-
C++ STL unordered_multiset容器说明
所属栏目:[语言] 日期:2022-07-15 热度:92
前面章节详细地介绍了 unordered_set 容器的特定和用法,在此基础上,本节再介绍一个类似的 C++ STL 无序容器,即 unordered_multiset 容器。 所谓类似,指的是 unordered_multiset 容器大部分的特性都和 unordered_set 容器相同,包括: unordered_multis[详细]
-
什么叫做适配器 C++ STL容器适配器详解
所属栏目:[语言] 日期:2022-07-15 热度:182
在详解什么是容器适配器之前,初学者首先要理解适配器的含义。 其实,容器适配器中的适配器,和生活中常见的电源适配器中适配器的含义非常接近。我们知道,无论是电脑、手机还是其它电器,充电时都无法直接使用 220V 的交流电,为了方便用户使用,各个电器[详细]
-
C++ stack STL stack 容器适配器用法简介
所属栏目:[语言] 日期:2022-07-15 热度:77
stack 栈适配器是一种单端开口的容器(如图 1 所示),实际上该容器模拟的就是栈存储结构,即无论是向里存数据还是从中取数据,都只能从这一个开口实现操作。 创建 stack 适配器,大致分为如下几种方式。 1) 创建一个不包含任何元素的 stack 适配器,并采[详细]
-
C++ STL unordered_multimap容器细说
所属栏目:[语言] 日期:2022-07-15 热度:195
C++ STL 标准库中,除了提供有 unordered_map 无序关联容器,还提供有和 unordered_map 容器非常相似的 unordered_multimap 无序关联容器。 和 unordered_map 容器一样,unordered_multimap 容器也以键值对的形式存储数据,且底层也采用哈希表结构存储各个[详细]
-
C++ STL unordered_set容器完全战略
所属栏目:[语言] 日期:2022-07-15 热度:162
我们知道,C++ 11 为 STL 标准库增添了 4 种无序(哈希)容器,前面已经对 unordered_map 和 unordered_multimap 容器做了详细的介绍,本节再讲解一种无序容器,即 unordered_set 容器。 unordered_set 容器,可直译为无序 set 容器,即 unordered_set 容[详细]
-
C++ STL unordered_map删去元素 erase 和clear
所属栏目:[语言] 日期:2022-07-15 热度:78
C++ STL 标准库为了方便用户可以随时删除 unordered_map 容器中存储的键值对,unordered_map 容器类模板中提供了以下 2 个成员方法: erase():删除 unordered_map 容器中指定的键值对; clear():删除 unordered_map 容器中所有的键值对,即清空容器。 本[详细]
-
Java元注解作用及使用
所属栏目:[语言] 日期:2022-07-15 热度:161
元注解是负责对其它注解进行说明的注解,自定义注解时可以使用元注解。Java 5 定义了 4 个注解,分别是 @Documented、@Target、@Retention 和 @Inherited。Java 8 又增加了 @Repeatable 和 @Native 两个注解。这些注解都可以在 java.lang.annotation 包中[详细]
-
Java自定义注解
所属栏目:[语言] 日期:2022-07-15 热度:177
前面我们学习了 Java 的基本注解和元注解,如果这两种注解不能满足你的需求,可以自定义注解。下面介绍如何自定义注解。 声明自定义注解使用 @interface 关键字(interface 关键字前加 @ 符号)实现。定义注解与定义接口非常像,如下代码可定义一个简单形[详细]
-
C++ array STL array 容器用法详解
所属栏目:[语言] 日期:2022-07-15 热度:155
array 容器是 C++ 11 标准中新增的序列容器,简单地理解,它就是在 C++ 普通数组的基础上,添加了一些成员函数和全局函数。在使用上,它比普通数组更安全(原因后续会讲),且效率并没有因此变差。 和其它容器不同,array 容器的大小是固定的,无法动态的[详细]
-
C++ STL array随机访问迭代器
所属栏目:[语言] 日期:2022-07-15 热度:140
在《C++ STL迭代器(iterator)》一节中,已经对迭代器做了详细的介绍,STL 为 array 容器配备了随机访问迭代器,该类迭代器是功能最强大的迭代器。本节将详细介绍 array 容器的迭代器的用法。 在 array 容器的模板类中,和随机访问迭代器相关的成员函数如[详细]
-
C++ STL array容器访问元素的几种方式
所属栏目:[语言] 日期:2022-07-15 热度:160
当 array 容器创建完成之后,最常做的操作就是获取其中的元素,甚至有时还会通过循环结构获取多个元素。本节就对获取容器中元素的方法做个汇总。 访问array容器中单个元素 首先,可以通过容器名[]的方式直接访问和使用容器中的元素,这和 C++ 标准数组访问[详细]
-
C++ STL vector容器详解
所属栏目:[语言] 日期:2022-07-15 热度:81
vector 容器是 STL 中最常用的容器之一,它和 array 容器非常类似,都可以看做是对 C++ 普通数组的升级版。不同之处在于,array 实现的是静态数组(容量固定的数组),而 vector 实现的是一个动态数组,即可以进行元素的插入和删除,在此过程中,vector 会[详细]
-
C++ STL vector容器迭代器用法详解
所属栏目:[语言] 日期:2022-07-15 热度:133
在《STL array随机访问迭代器》一节中,详细介绍了 array 容器迭代器,vector 容器迭代器和前者有很多相同之处。比如,vector 容器的迭代器也是随机访问迭代器,并且 vector 模板类提供的操作迭代器的成员函数也和 array 容器一样(如表 1 所示)。 表 1 v[详细]
-
C++ STL vector容器访问元素的几种方式
所属栏目:[语言] 日期:2022-07-15 热度:78
学会如何创建并初始化 vector 容器之后,本节继续来学习如何获取(甚至修改)容器中存储的元素。 访问vector容器中单个元素 首先,vector 容器可以向普通数组那样访问存储的元素,甚至对指定下标处的元素进行修改,比如: #include iostream #include vect[详细]
-
C++ STL vector添加元素 push_back 和emplace_back 详解
所属栏目:[语言] 日期:2022-07-15 热度:167
要知道,向 vector 容器中添加元素的唯一方式就是使用它的成员函数,如果不调用成员函数,非成员函数既不能添加也不能删除元素。这意味着,vector 容器对象必须通过它所允许的函数去访问,迭代器显然不行。 在 《STL vector容器详解》一节中,已经给大家列[详细]
-
C++ STL vector插入元素 insert 和emplace 详解
所属栏目:[语言] 日期:2022-07-15 热度:188
vector容器提供了 insert() 和 emplace() 这 2 个成员函数,用来实现在容器指定位置处插入元素,本节将对它们的用法做详细的讲解。 另外,如果想实现在 vector 容器尾部添加元素,可阅读《vector添加元素》一节。 insert() insert() 函数的功能是在 vector[详细]
-
C++11支撑函数模板的默认模板参数
所属栏目:[语言] 日期:2022-07-14 热度:171
在 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 热度:64
C++11 标准新引入了一种类模板,命名为 tuple(中文可直译为元组)。tuple 最大的特点是:实例化的对象可以存储任意数量、任意类型的数据。 tuple 的应用场景很广泛,例如当需要存储多个不同类型的元素时,可以使用 tuple;当函数需要返回多个数据时,可以[详细]
-
C++11列表初始化 统一了初始化方法
所属栏目:[语言] 日期:2022-07-14 热度:147
我们知道,在 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 热度:89
lambda 源自希腊字母表中第 11 位的 ,在计算机科学领域,它则是被用来表示一种匿名函数。所谓匿名函数,简单地理解就是没有名称的函数,又常被称为 lambda 函数或者 lambda 表达式。 继 Python、Java、C#、PHP 等众多高级编程语言都支持 lambda 匿名函数[详细]
-
C++11非受限结合体 union
所属栏目:[语言] 日期:2022-07-14 热度:77
在 C/C++ 中,联合体(Union)是一种构造数据类型。在一个联合体内,我们可以定义多个不同类型的成员,这些成员将会共享同一块内存空间。老版本的 C++ 为了和C语言保持兼容,对联合体的数据成员的类型进行了很大程度的限制,这些限制在今天看来并没有必要[详细]
-
C++11 for循环 介于范围的循环 详解
所属栏目:[语言] 日期:2022-07-14 热度:67
C++ 11标准之前(C++ 98/03 标准),如果要用 for 循环语句遍历一个数组或者容器,只能套用如下结构: for(表达式 1; 表达式 2; 表达式 3){ //循环体 } 例如,下面程序演示了用上述结构遍历数组和容器的具体实现过程(实例一): #include iostream #inclu[详细]