-
C++ STL array容器访问元素的几种方式
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
当 array 容器创建完成之后,最常做的操作就是获取其中的元素,甚至有时还会通过循环结构获取多个元素。本节就对获取容器中元素的方法做个汇总。 访问array容器中单个元素 首先,可以通过容器名[]的方式直接访问和使用容器中的元素,这和 C++ 标准数组访问[详细]
-
C++ STL vector容器详解
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
vector 容器是 STL 中最常用的容器之一,它和 array 容器非常类似,都可以看做是对 C++ 普通数组的升级版。不同之处在于,array 实现的是静态数组(容量固定的数组),而 vector 实现的是一个动态数组,即可以进行元素的插入和删除,在此过程中,vector 会[详细]
-
C++ STL vector容器迭代器用法详解
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
在《STL array随机访问迭代器》一节中,详细介绍了 array 容器迭代器,vector 容器迭代器和前者有很多相同之处。比如,vector 容器的迭代器也是随机访问迭代器,并且 vector 模板类提供的操作迭代器的成员函数也和 array 容器一样(如表 1 所示)。 表 1 v[详细]
-
C++ STL vector容器访问元素的几种方式
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
学会如何创建并初始化 vector 容器之后,本节继续来学习如何获取(甚至修改)容器中存储的元素。 访问vector容器中单个元素 首先,vector 容器可以向普通数组那样访问存储的元素,甚至对指定下标处的元素进行修改,比如: #include iostream #include vect[详细]
-
C++ STL vector添加元素 push_back 和emplace_back 详解
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
要知道,向 vector 容器中添加元素的唯一方式就是使用它的成员函数,如果不调用成员函数,非成员函数既不能添加也不能删除元素。这意味着,vector 容器对象必须通过它所允许的函数去访问,迭代器显然不行。 在 《STL vector容器详解》一节中,已经给大家列[详细]
-
C++ STL vector插入元素 insert 和emplace 详解
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
vector容器提供了 insert() 和 emplace() 这 2 个成员函数,用来实现在容器指定位置处插入元素,本节将对它们的用法做详细的讲解。 另外,如果想实现在 vector 容器尾部添加元素,可阅读《vector添加元素》一节。 insert() insert() 函数的功能是在 vector[详细]
-
C++ STL list增加 插入 元素方法详解
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
前面章节介绍了如何创建 list 容器,在此基础上,本节继续讲解如何向现有 list 容器中添加或插入新的元素。 list 模板类中,与添加或插入新元素相关的成员方法有如下几个: push_front():向 list 容器首个元素前添加新元素; push_back():向 list 容器最[详细]
-
C++ STL list删掉元素详解
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
对 list 容器存储的元素执行删除操作,需要借助该容器模板类提供的成员函数。幸运的是,相比其它 STL 容器模板类,list 模板类提供了更多用来实现此操作的成员函数(如表 1 所示)。 表 1 实现 list 容器删除元素的成员函数 成员函数 功能 pop_front() 删[详细]
-
C++ STL forward_list容器完全策略
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
forward_list 是 C++ 11 新添加的一类容器,其底层实现和 list 容器一样,采用的也是链表结构,只不过 forward_list 使用的是单链表,而 list 使用的是双向链表(如图 1 所示)。 使用链表存储数据最大的特点在于,其并不会将数据进行集中存储(向数组那样[详细]
-
C++ list STL list 访问元素的几种办法
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
不同于之前学过的 STL 容器,访问 list 容器中存储元素的方式很有限,即要么使用 front() 和 back() 成员函数,要么使用 list 容器迭代器。 list 容器不支持随机访问,未提供下标操作符 [] 和 at() 成员函数,也没有提供 data() 成员函数。 通过 front()[详细]
-
C++ STL list迭代器及用法 细说版
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
只有运用迭代器,才能访问 list 容器中存储的各个元素。list 模板类提供了如表 1 所示的这些迭代器函数。 表 1 list 容器迭代器函数 迭代器函数 功能 begin() 返回指向容器中第一个元素的双向迭代器(正向迭代器)。 end() 返回指向容器中最后一个元素所在[详细]
-
C++ list STL list 容器完全攻略 非常详细
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
STL list 容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list 容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。 可以看到,list 容器中各个元素的前后顺序是靠指针来维系的,每个元素都配[详细]
-
C++ STL deque容器增加和删除元素方法完全攻略
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
deque 容器中,无论是添加元素还是删除元素,都只能借助 deque 模板类提供的成员函数。表 1 中罗列的是所有和添加或删除容器内元素相关的 deque 模板类中的成员函数。 表 1 和添加或删除deque容器中元素相关的成员函数 成员函数 功能 push_back() 在容器现[详细]
-
C++ STL vector删除元素的几种方式 超级具体
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
前面提到,无论是向现有 vector 容器中访问元素、添加元素还是插入元素,都只能借助 vector 模板类提供的成员函数,但删除 vector 容器的元素例外,完成此操作除了可以借助本身提供的成员函数,还可以借助一些全局函数。 基于不同场景的需要,删除 vecotr[详细]
-
C++ STL deque容器迭代器用法解说
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
deque 容器迭代器的类型为随机访问迭代器,deque 模板类提供了表 1 所示这些成员函数,通过调用这些函数,可以获得表示不同含义的随机访问迭代器。 有关迭代器及其类型的介绍,可以阅读《C++ STL迭代器(iterator)》一节,本节不再做具体介绍。 成员函数[详细]
-
C++ STL deque容器访问元素 4种办法
所属栏目:[语言] 日期:2022-07-15 来源:DaWei
通过《STL deque容器》一节,详细介绍了如何创建一个 deque 容器,本节继续讲解如何访问(甚至修改)deque 容器存储的元素。 和 array、vector 容器一样,可以采用普通数组访问存储元素的方式,访问 deque 容器中的元素,比如: #include iostream #includ[详细]
-
C++11支撑函数模板的默认模板参数
所属栏目:[语言] 日期:2022-07-14 来源:DaWei
在 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 来源:DaWei
C++11 标准新引入了一种类模板,命名为 tuple(中文可直译为元组)。tuple 最大的特点是:实例化的对象可以存储任意数量、任意类型的数据。 tuple 的应用场景很广泛,例如当需要存储多个不同类型的元素时,可以使用 tuple;当函数需要返回多个数据时,可以[详细]
-
C++11列表初始化 统一了初始化方法
所属栏目:[语言] 日期:2022-07-14 来源:DaWei
我们知道,在 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 来源:DaWei
lambda 源自希腊字母表中第 11 位的 ,在计算机科学领域,它则是被用来表示一种匿名函数。所谓匿名函数,简单地理解就是没有名称的函数,又常被称为 lambda 函数或者 lambda 表达式。 继 Python、Java、C#、PHP 等众多高级编程语言都支持 lambda 匿名函数[详细]
-
C++11非受限结合体 union
所属栏目:[语言] 日期:2022-07-14 来源:DaWei
在 C/C++ 中,联合体(Union)是一种构造数据类型。在一个联合体内,我们可以定义多个不同类型的成员,这些成员将会共享同一块内存空间。老版本的 C++ 为了和C语言保持兼容,对联合体的数据成员的类型进行了很大程度的限制,这些限制在今天看来并没有必要[详细]
-
C++11 for循环 介于范围的循环 详解
所属栏目:[语言] 日期:2022-07-14 来源:DaWei
C++ 11标准之前(C++ 98/03 标准),如果要用 for 循环语句遍历一个数组或者容器,只能套用如下结构: for(表达式 1; 表达式 2; 表达式 3){ //循环体 } 例如,下面程序演示了用上述结构遍历数组和容器的具体实现过程(实例一): #include iostream #inclu[详细]
-
C++11 constexpr 验证是不是为常量表达式
所属栏目:[语言] 日期:2022-07-14 来源:DaWei
constexpr 是 C++ 11 标准新引入的关键字,不过在讲解其具体用法和功能之前,读者需要先搞清楚 C++ 常量表达式的含义。 所谓常量表达式,指的就是由多个(1)常量组成的表达式。换句话说,如果表达式中的成员都是常量,那么该表达式就是一个常量表达式。这[详细]
-
C++11 long long超长整形解析
所属栏目:[语言] 日期:2022-07-14 来源:DaWei
C++ 11 标准中,基于整数大小的考虑,共提供了如表 1 所示的这些数据类型。与此同时,标准中还明确限定了各个数据类型最少占用的位数。 说道 C++ 标准委员会将 long long 整形写入 C++ 11 标准中,其实早在 1995 年,就有人提议将 long long 整形写入 C++[详细]
-
C++11右值引用 一看即明白
所属栏目:[语言] 日期:2022-07-14 来源:DaWei
《C++11是什么》一节中提到,在 C++98/03 标准的基础上,C++11 标准对 C++ 语言增添了约 140 个新特性。本节要讲的右值引用就是众多新特性中的一个,同时也是最重要的特性之一。 很多初学者都感觉右值引用晦涩难懂,其实不然。右值引用只不过是一种新的 C+[详细]
