-
C++ STL array容器访问元素的几种方式
所属栏目:[语言] 日期:2022-07-15 热度:147
当 array 容器创建完成之后,最常做的操作就是获取其中的元素,甚至有时还会通过循环结构获取多个元素。本节就对获取容器中元素的方法做个汇总。 访问array容器中单个元素 首先,可以通过容器名[]的方式直接访问和使用容器中的元素,这和 C++ 标准数组访问[详细]
-
C++ STL array随机访问迭代器
所属栏目:[语言] 日期:2022-07-15 热度:85
在《C++ STL迭代器(iterator)》一节中,已经对迭代器做了详细的介绍,STL 为 array 容器配备了随机访问迭代器,该类迭代器是功能最强大的迭代器。本节将详细介绍 array 容器的迭代器的用法。 在 array 容器的模板类中,和随机访问迭代器相关的成员函数如[详细]
-
Java自定义注解
所属栏目:[语言] 日期:2022-07-15 热度:79
前面我们学习了 Java 的基本注解和元注解,如果这两种注解不能满足你的需求,可以自定义注解。下面介绍如何自定义注解。 声明自定义注解使用 @interface 关键字(interface 关键字前加 @ 符号)实现。定义注解与定义接口非常像,如下代码可定义一个简单形[详细]
-
Java元注解作用及使用
所属栏目:[语言] 日期:2022-07-15 热度:130
元注解是负责对其它注解进行说明的注解,自定义注解时可以使用元注解。Java 5 定义了 4 个注解,分别是 @Documented、@Target、@Retention 和 @Inherited。Java 8 又增加了 @Repeatable 和 @Native 两个注解。这些注解都可以在 java.lang.annotation 包中[详细]
-
C++ STL vector删除元素的几种方式 超级具体
所属栏目:[语言] 日期:2022-07-15 热度:99
前面提到,无论是向现有 vector 容器中访问元素、添加元素还是插入元素,都只能借助 vector 模板类提供的成员函数,但删除 vector 容器的元素例外,完成此操作除了可以借助本身提供的成员函数,还可以借助一些全局函数。 基于不同场景的需要,删除 vecotr[详细]
-
C++ STL deque容器迭代器用法解说
所属栏目:[语言] 日期:2022-07-15 热度:68
deque 容器迭代器的类型为随机访问迭代器,deque 模板类提供了表 1 所示这些成员函数,通过调用这些函数,可以获得表示不同含义的随机访问迭代器。 有关迭代器及其类型的介绍,可以阅读《C++ STL迭代器(iterator)》一节,本节不再做具体介绍。 成员函数[详细]
-
C++ STL deque容器访问元素 4种办法
所属栏目:[语言] 日期:2022-07-15 热度:155
通过《STL deque容器》一节,详细介绍了如何创建一个 deque 容器,本节继续讲解如何访问(甚至修改)deque 容器存储的元素。 和 array、vector 容器一样,可以采用普通数组访问存储元素的方式,访问 deque 容器中的元素,比如: #include iostream #includ[详细]
-
C++ STL deque容器增加和删除元素方法完全攻略
所属栏目:[语言] 日期:2022-07-15 热度:77
deque 容器中,无论是添加元素还是删除元素,都只能借助 deque 模板类提供的成员函数。表 1 中罗列的是所有和添加或删除容器内元素相关的 deque 模板类中的成员函数。 表 1 和添加或删除deque容器中元素相关的成员函数 成员函数 功能 push_back() 在容器现[详细]
-
C++ list STL list 容器完全攻略 非常详细
所属栏目:[语言] 日期:2022-07-15 热度:190
STL list 容器,又称双向链表容器,即该容器的底层是以双向链表的形式实现的。这意味着,list 容器中的元素可以分散存储在内存空间里,而不是必须存储在一整块连续的内存空间中。 可以看到,list 容器中各个元素的前后顺序是靠指针来维系的,每个元素都配[详细]
-
C++ STL list迭代器及用法 细说版
所属栏目:[语言] 日期:2022-07-15 热度:99
只有运用迭代器,才能访问 list 容器中存储的各个元素。list 模板类提供了如表 1 所示的这些迭代器函数。 表 1 list 容器迭代器函数 迭代器函数 功能 begin() 返回指向容器中第一个元素的双向迭代器(正向迭代器)。 end() 返回指向容器中最后一个元素所在[详细]
-
C++ list STL list 访问元素的几种办法
所属栏目:[语言] 日期:2022-07-15 热度:124
不同于之前学过的 STL 容器,访问 list 容器中存储元素的方式很有限,即要么使用 front() 和 back() 成员函数,要么使用 list 容器迭代器。 list 容器不支持随机访问,未提供下标操作符 [] 和 at() 成员函数,也没有提供 data() 成员函数。 通过 front()[详细]
-
C++ STL list增加 插入 元素方法详解
所属栏目:[语言] 日期:2022-07-15 热度:191
前面章节介绍了如何创建 list 容器,在此基础上,本节继续讲解如何向现有 list 容器中添加或插入新的元素。 list 模板类中,与添加或插入新元素相关的成员方法有如下几个: push_front():向 list 容器首个元素前添加新元素; push_back():向 list 容器最[详细]
-
C++ STL list删掉元素详解
所属栏目:[语言] 日期:2022-07-15 热度:85
对 list 容器存储的元素执行删除操作,需要借助该容器模板类提供的成员函数。幸运的是,相比其它 STL 容器模板类,list 模板类提供了更多用来实现此操作的成员函数(如表 1 所示)。 表 1 实现 list 容器删除元素的成员函数 成员函数 功能 pop_front() 删[详细]
-
C++ STL forward_list容器完全策略
所属栏目:[语言] 日期:2022-07-15 热度:160
forward_list 是 C++ 11 新添加的一类容器,其底层实现和 list 容器一样,采用的也是链表结构,只不过 forward_list 使用的是单链表,而 list 使用的是双向链表(如图 1 所示)。 使用链表存储数据最大的特点在于,其并不会将数据进行集中存储(向数组那样[详细]
-
Java字节流的使用 字节输入 输出流 文件输入 输出流
所属栏目:[语言] 日期:2022-07-15 热度:192
在本章的第一节《Java流的概念》中就提到 InputStream 是 Java 所有字节输入流类的父类,OutputStream 是 Java 所有字节输出流类的父类,它们都是一个抽象类,因此继承它们的子类要重新定义父类中的抽象方法。 下面首先介绍上述两个父类提供的常用方法,然[详细]
-
C++序列式容器 STL序列式容器 是啥
所属栏目:[语言] 日期:2022-07-14 热度:145
所谓序列容器,即以线性排列(类似普通数组的存储方式)来存储某一指定类型(例如 int、double 等)的数据,需要特殊说明的是,该类容器并不会自动对存储的元素按照值的大小进行排序。 需要注意的是,序列容器只是一类容器的统称,并不指具体的某个容器,[详细]
-
迭代器是什么 C++ STL迭代器 iterator 用法细说
所属栏目:[语言] 日期:2022-07-14 热度:122
无论是序列容器还是关联容器,最常做的操作无疑是遍历容器中存储的元素,而实现此操作,多数情况会选用迭代器(iterator)来实现。那么,迭代器到底是什么呢? 常用的迭代器按功能强弱分为输入迭代器、输出迭代器、前向迭代器、双向迭代器、随机访问迭代器[详细]
-
C++11 shared_ptr智能指针 超级具体
所属栏目:[语言] 日期:2022-07-14 热度:126
在实际的 C++ 开发中,我们经常会遇到诸如程序运行中突然崩溃、程序运行所用内存越来越多最终不得不重启等问题,这些问题往往都是内存资源管理不当造成的。比如: 有些内存资源已经被释放,但指向它的指针并没有改变指向(成为了野指针),并且后续还在使[详细]
-
C++ STL容器叫做什么
所属栏目:[语言] 日期:2022-07-14 热度:133
在实际的开发过程中,合理组织数据的存取与选择处理数据的算法同等重要,存取数据的方式往往会直接影响到对它们进行增删改查操作的复杂程度和时间消耗。事实上,当程序中存在对时耗要求很高的部分时,数据结构的选择就显得尤为重要,有时甚至直接影响程序[详细]
-
C++11引用限定符的用处
所属栏目:[语言] 日期:2022-07-14 热度:64
在《C++右值引用》一节中,我们给您介绍了左值和右值。值得一提的是,左值和右值的区分也同样适用于类对象,本节中将左值的类对象称为左值对象,将右值的类对象称为右值对象。 默认情况下,对于类中用 public 修饰的成员函数,既可以被左值对象调用,也可[详细]
-
GNU开源精神及其发展进程
所属栏目:[语言] 日期:2022-07-14 热度:62
通过前面对 STL 各种民间版本的介绍我们知道,全世界所有的 STL 实现版本都源于 Stepanov 和 Meng Lee 完成的原始版本(也就是 HP STL),该版本的每一个头文件中都有一份声明,即允许任何人任意运用、拷贝、修改、传播、贩卖这些代码,无需付费,但唯一的[详细]
-
C++ STL基础组成 6大组件+13个头文件
所属栏目:[语言] 日期:2022-07-14 热度:147
通常认为,STL 是由容器、算法、迭代器、函数对象、适配器、内存分配器这 6 部分构成,其中后面 4 部分是为前 2 部分服务的,它们各自的含义如表 1 所示。 另外,在惠普实验室最初发行的版本中,STL 被组织成 48 个头文件;但在 C++ 标准中,它们被重新组[详细]
-
C++ STL版本有什么
所属栏目:[语言] 日期:2022-07-14 热度:77
自 1998 年 ANSI/ISO C++ 标准正式定案,C++ STL 规范版本正式通过以后,由于其实开源的,各个 C++ 编译器厂商在此标准的基础上,实现了满足自己需求的 C++ STL 泛型库,主要包括 HP STL、SGI STL、STLport、PJ STL、Rouge Wave STL 等。 HP STL HP STL 是[详细]
-
C++ STL是什么 有啥用
所属栏目:[语言] 日期:2022-07-14 热度:157
在已有 C++ 尤其是 C++ 模板的基础上,从本节开始,我们开始系统地学习 STL 标准模板库,首先来了解什么是 STL,以及学习 STL 有什么用? STL,英文全称 standard template library,中文可译为标准模板库或者泛型库,其包含有大量的模板类和模板函数,是[详细]
-
C++ STL的发展历程是啥样的
所属栏目:[语言] 日期:2022-07-14 热度:124
Alexander Stepanov(后被誉为 STL 标准模板库之父,后简称 Stepanov),1950 年出生与前苏联的莫斯科,他曾在莫斯科大学研究数学,此后一直致力于计算机语言和泛型库研究。 在 20 世纪 70 年代,Stepanov 开始考虑,在保证效率的前提下,是否能将算法从诸[详细]
