-
C++ list(STL list)元素访问的几种方式
所属栏目:[语言] 日期:2023-06-09 热度:2556
不同于之前学过的 STL 容器,访问 list 容器中存储元素的方式很有限,即要么使用 front() 和 back() 成员函数,要么使用 list 容器迭代器。
list 容器不支持随机访问,未提供下标操作符 [] 和 at() 成员函数,也没有[详细] -
C++ STL list迭代器和用法(详解版)
所属栏目:[语言] 日期:2023-06-09 热度:8656
只有运用迭代器,才能访问 list 容器中存储的各个元素。list 模板类提供了如表 1 所示的这些迭代器函数。
表 1 list 容器迭代器函数
迭代器函数 功能
begin() 返回指向容器中第一个元素的双向迭代器(正向[详细] -
C++ list(STL list)容器完全指南(超级详细)
所属栏目:[语言] 日期:2023-06-09 热度:7692
STL list 容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list 容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。
可以看到,list 容器中各个元素的[详细] -
C++ STL deque容器添加与删除元素方法完全攻略
所属栏目:[语言] 日期:2023-06-09 热度:9215
deque 容器中,无论是添加元素还是删除元素,都只能借助 deque 模板类提供的成员函数。表 1 中罗列的是所有和添加或删除容器内元素相关的 deque 模板类中的成员函数。
表 1 和添加或删除deque容器中元素相关的成员[详细] -
C++ STL deque容器访问元素(4种方式)
所属栏目:[语言] 日期:2023-06-09 热度:5697
通过《STL deque容器》一节,详细介绍了如何创建一个 deque 容器,本节继续讲解如何访问(甚至修改)deque 容器存储的元素。
和 array、vector 容器一样,可以采用普通数组访问存储元素的方式,访问 deque 容器中[详细] -
C++ STL deque容器迭代器使用方式详解
所属栏目:[语言] 日期:2023-06-09 热度:6553
deque 容器迭代器的类型为随机访问迭代器,deque 模板类提供了表 1 所示这些成员函数,通过调用这些函数,可以获得表示不同含义的随机访问迭代器。
有关迭代器及其类型的介绍,可以阅读《C++ STL迭代器(iterator)[详细] -
C++ STL deque容器(详细说明)
所属栏目:[语言] 日期:2023-06-09 热度:6582
deque 是 double-ended queue 的缩写,又称双端队列容器。
前面章节中,我们已经系统学习了 vector 容器,值得一提的是,deque 容器和 vecotr 容器有很多相似之处,比如:
deque 容器也擅长在序列尾部添加或删除[详细] -
C++ STL vector删除元素的几种方式(非常详细)
所属栏目:[语言] 日期:2023-06-08 热度:4298
前面提到,无论是向现有 vector 容器中访问元素、添加元素还是插入元素,都只能借助 vector 模板类提供的成员函数,但删除 vector 容器的元素例外,完成此操作除了可以借助本身提供的成员函数,还可以借助一些全局函[详细]
-
C++ STL vector插入元素(insert()与emplace())详解
所属栏目:[语言] 日期:2023-06-08 热度:4904
vector容器提供了 insert() 和 emplace() 这 2 个成员函数,用来实现在容器指定位置处插入元素,本节将对它们的用法做详细的讲解。
另外,如果想实现在 vector 容器尾部添加元素,可阅读《vector添加元素》一节。[详细] -
C++ STL vector添加元素(push_back()和emplace_back()详细说明
所属栏目:[语言] 日期:2023-06-08 热度:4796
要知道,向 vector 容器中添加元素的唯一方式就是使用它的成员函数,如果不调用成员函数,非成员函数既不能添加也不能删除元素。这意味着,vector 容器对象必须通过它所允许的函数去访问,迭代器显然不行。
在 《[详细] -
C++ STL vector容器访问元素的几种方法
所属栏目:[语言] 日期:2023-06-08 热度:9801
学会如何创建并初始化 vector 容器之后,本节继续来学习如何获取(甚至修改)容器中存储的元素。
访问vector容器中单个元素
首先,vector 容器可以向普通数组那样访问存储的元素,甚至对指定下标处的元素进行修[详细] -
C++ STL vector容器迭代器用法具体解析
所属栏目:[语言] 日期:2023-06-08 热度:5449
在《STL array随机访问迭代器》一节中,详细介绍了 array 容器迭代器,vector 容器迭代器和前者有很多相同之处。比如,vector 容器的迭代器也是随机访问迭代器,并且 vector 模板类提供的操作迭代器的成员函数也和 a[详细]
-
C++ STL vector容器具体说明
所属栏目:[语言] 日期:2023-06-08 热度:1426
vector 容器是 STL 中最常用的容器之一,它和 array 容器非常类似,都可以看做是对 C++ 普通数组的“升级版”。不同之处在于,array 实现的是静态数组(容量固定的数组),而 vector 实现的是一个动态数组[详细]
-
C++ STL array容器访问元素的几种方法
所属栏目:[语言] 日期:2023-06-08 热度:4324
当 array 容器创建完成之后,最常做的操作就是获取其中的元素,甚至有时还会通过循环结构获取多个元素。本节就对获取容器中元素的方法做个汇总。
访问array容器中单个元素
首先,可以通过容器名[]的方式直接访问[详细] -
C++ array(STL array)容器使用方法详解
所属栏目:[语言] 日期:2023-06-08 热度:2892
array 容器是 C++ 11 标准中新增的序列容器,简单地理解,它就是在 C++ 普通数组的基础上,添加了一些成员函数和全局函数。在使用上,它比普通数组更安全(原因后续会讲),且效率并没有因此变差。
和其它容器不同[详细] -
迭代器是什么,C++ STL迭代器(iterator)使用方法详解
所属栏目:[语言] 日期:2023-06-08 热度:9066
无论是序列容器还是关联容器,最常做的操作无疑是遍历容器中存储的元素,而实现此操作,多数情况会选用“迭代器(iterator)”来实现。那么,迭代器到底是什么呢?
我们知道,尽管不同容器的内部结构各[详细] -
C++ STL的发展历程是怎么样的?
所属栏目:[语言] 日期:2023-06-08 热度:334
Alexander Stepanov(后被誉为 STL 标准模板库之父,后简称 Stepanov),1950 年出生与前苏联的莫斯科,他曾在莫斯科大学研究数学,此后一直致力于计算机语言和泛型库研究。
在 20 世纪 70 年代,Stepanov 开始考[详细] -
C++ STL是什么,有什么作用?
所属栏目:[语言] 日期:2023-06-07 热度:312
在已有 C++ 尤其是 C++ 模板的基础上,从本节开始,我们开始系统地学习 STL 标准模板库,首先来了解什么是 STL,以及学习 STL 有什么用?
STL,英文全称 standard template library,中文可译为标准模板库或者泛型[详细] -
C++ STL版本有什么?
所属栏目:[语言] 日期:2023-06-07 热度:1597
自 1998 年 ANSI/ISO C++ 标准正式定案,C++ STL 规范版本正式通过以后,由于其实开源的,各个 C++ 编译器厂商在此标准的基础上,实现了满足自己需求的 C++ STL 泛型库,主要包括 HP STL、SGI STL、STLport、PJ STL、[详细]
-
C++11 shared_ptr智能指针(超级具体)
所属栏目:[语言] 日期:2023-06-07 热度:5954
在实际的 C++ 开发中,我们经常会遇到诸如程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的。比如:
有些内存资源已经被释放,但指向它的指针并没有改变[详细] -
C++11 nullptr:用于初始化空指针
所属栏目:[语言] 日期:2023-06-07 热度:7152
实际开发中,避免产生“野指针”最有效的方法,就是在定义指针的同时完成初始化操作,即便该指针的指向尚未明确,也要将其初始化为空指针。
所谓“野指针”,又称“悬挂指针”,指的[详细] -
C++11引用限定符的使用方法
所属栏目:[语言] 日期:2023-06-07 热度:3485
在《C++右值引用》一节中,我们给您介绍了左值和右值。值得一提的是,左值和右值的区分也同样适用于类对象,本节中将左值的类对象称为左值对象,将右值的类对象称为右值对象。
默认情况下,对于类中用 public 修饰[详细] -
C++11中转移()函数:强制把左值转为右值
所属栏目:[语言] 日期:2023-06-07 热度:3315
通过学习 《C++11移动构造函数》一节我们知道,C++11 标准中借助右值引用可以为指定类添加移动构造函数,这样当使用该类的右值对象(可以理解为临时对象)初始化同类对象时,编译器会优先选择移动构造函数。
注意[详细] -
C++11右值引用(一文看懂)
所属栏目:[语言] 日期:2023-06-07 热度:4285
《C++11是什么》一节中提到,在 C++98/03 标准的基础上,C++11 标准对 C++ 语言增添了约 140 个新特性。本节要讲的右值引用就是众多新特性中的一个,同时也是最重要的特性之一。
很多初学者都感觉右值引用晦涩难懂[详细] -
C++11 constexpr:检验是否为常量表达式(长篇神文)
所属栏目:[语言] 日期:2023-06-07 热度:4752
constexpr 是 C++ 11 标准新引入的关键字,不过在讲解其具体用法和功能之前,读者需要先搞清楚 C++ 常量表达式的含义。
所谓常量表达式,指的就是由多个(≥1)常量组成的表达式。换句话说,如果表达式中的成员[详细]
