- C 标准库
- C 标准库
- C++ 标准库
- C++ 库 - 主页
- C++ 库 - <fstream>
- C++ 库 - <iomanip>
- C++ 库 - <ios>
- C++ 库 - <iosfwd>
- C++ 库 - <iostream>
- C++ 库 - <istream>
- C++ 库 - <ostream>
- C++ 库 - <sstream>
- C++ 库 - <streambuf>
- C++ 库 - <原子>
- C++ 库 - <复杂>
- C++ 库 - <异常>
- C++ 库 - <功能>
- C++ 库 - <限制>
- C++ 库 - <语言环境>
- C++ 库 - <内存>
- C++ 库 - <新>
- C++ 库 - <数字>
- C++ 库 - <正则表达式>
- C++ 库 - <stdexcept>
- C++ 库 - <字符串>
- C++ 库 - <线程>
- C++ 库 - <元组>
- C++ 库 - <类型信息>
- C++ 库 - <实用程序>
- C++ 库 - <valarray>
C++ 库 - <向量>
介绍
向量是可以改变大小的序列容器。容器是保存相同类型数据的对象。序列容器严格按照线性顺序存储元素。
Vector 将元素存储在连续的内存位置,并允许使用下标运算符 [] 直接访问任何元素。与数组不同,向量可以在运行时根据需要缩小或扩展。向量的存储是自动处理的。
为了支持运行时的收缩和扩展功能,向量容器可能会分配一些额外的存储空间以适应可能的增长,因此容器的实际容量大于大小。因此,与数组相比,向量消耗更多的内存来换取高效管理存储和动态增长的能力。
零大小的向量也是有效的。在这种情况下,vector.begin()和vector.end()指向相同的位置。但是调用 front() 或 back() 的Behave是未定义的。
定义
以下是 <vector> 头文件中 std::vector 的定义
template < class T, class Alloc = allocator<T> > class vector;
参数
T - 所包含元素的类型。
T 可以替换为任何其他数据类型,包括用户定义的类型。
Alloc - 分配器对象的类型。
默认情况下,使用分配器类模板,它定义了最简单的内存分配模型,并且与值无关。
会员类型
以下成员类型可以用作成员函数的参数或返回类型。
先生。 | 会员类型 | 定义 |
---|---|---|
1 | 值类型 | T(模板的第一个参数) |
2 | 分配器类型 | Alloc(模板的第二个参数) |
3 | 参考 | 值类型& |
4 | 常量引用 | 常量值类型& |
5 | 指针 | 值类型* |
6 | 常量指针 | 常量值类型* |
7 | 迭代器 | value_type 的随机访问迭代器 |
8 | 常量迭代器 | const value_type 的随机访问迭代器 |
9 | 反向迭代器 | std::reverse_iterator <迭代器> |
10 | 常量反向迭代器 | std::reverse_iterator <const_iterator> |
11 | 尺码类型 | 尺寸_t |
12 | 差异类型 | ptrdiff_t |
来自 <向量> 的函数
下面是 <vector> 标头中所有方法的列表。
构造函数
先生。 | 方法及说明 |
---|---|
1 | 矢量::矢量 默认构造函数 构造一个空容器,其中包含零个元素。 |
2 | 矢量::矢量 填充构造函数 构造一个包含n 个元素的容器,并将val分配给每个元素。 |
3 | 矢量::矢量 范围构造函数 构造一个容器,其中包含从第一个到最后一个范围内的尽可能多的元素。 |
4 | 矢量::矢量 复制构造函数 使用现有容器 x 中存在的每个元素的副本构造一个容器。 |
5 | 矢量::矢量 移动构造函数 使用移动语义构造具有其他内容的容器。 |
6 | 矢量::矢量 初始值设定项列表构造函数 从初始值设定项列表构造一个容器。 |
析构函数
先生。 | 方法及说明 |
---|---|
1 | 向量::~向量
通过释放容器内存来销毁容器。 |
会员功能
先生。 | 方法及说明 |
---|---|
1 | 矢量::分配 填充版本 通过替换旧值来为向量元素分配新值。 |
2 | 矢量::分配 范围版本 通过替换旧值来为向量元素分配新值。 |
3 | 矢量::分配 初始值设定项列表版本 通过替换旧值来为向量元素分配新值。 |
4 | 向量::在
返回对向量中位置n处存在的元素的引用。 |
5 | 矢量::返回
返回对向量最后一个元素的引用。 |
6 | 矢量::开始
返回指向向量第一个元素的随机访问迭代器。 |
7 | 向量::容量
返回分配存储的大小,以元素表示。 |
8 | 矢量::cbegin
返回一个指向向量开头的常量随机访问迭代器。 |
9 | 矢量::cend
返回一个指向向量开头的常量随机访问迭代器。 |
10 | 矢量::清除
通过从向量中删除所有元素并将向量的大小设置为零来销毁向量。 |
11 | 矢量::crbegin
返回一个常量反向迭代器,它指向容器的反向开头。 |
12 | 矢量::crend
返回一个常量反向迭代器,它指向向量的反向端。 |
13 | 矢量::数据
返回指向向量容器的第一个元素的指针。 |
14 | 矢量::安放
通过在位置插入新元素来扩展容器。 |
15 | 矢量::emplace_back
在向量末尾插入新元素。 |
16 | 矢量::空
测试向量是否为空。 |
17 号 | 矢量::结束
返回一个迭代器,该迭代器指向向量容器中的末尾元素。 |
18 | 矢量::擦除位置版本 从向量中删除单个元素。 |
19 | 矢量::擦除范围版本 从向量中删除单个元素。 |
20 | 矢量::前面
返回对向量第一个元素的引用。 |
21 | 矢量::获取分配器
返回与向量关联的分配器。 |
22 | 矢量::插入 单元素版本 通过在位置插入新元素来扩展迭代器。 |
23 | 矢量::插入 填充版本 通过在容器中插入新元素来扩展向量。 |
24 | 矢量::插入 范围版本 通过在容器中插入新元素来扩展向量。 |
25 | 矢量::插入 移动版本 通过在容器中插入新元素来扩展向量。 |
26 | 矢量::插入 初始值设定项列表版本 通过在容器中插入新元素来扩展向量。 |
27 | 向量::最大大小
返回向量可以容纳的最大元素数。 |
28 | 矢量::运算符= 复制版本 通过替换旧内容将新内容分配给向量,并在必要时修改大小。 |
29 | 矢量::运算符= 移动版本 通过替换旧内容将新内容分配给向量,并在必要时修改大小。 |
30 | vector::operator = 初始化列表版本 通过替换旧内容将新内容分配给向量,并在必要时修改大小。 |
31 | 向量::运算符[]
返回对位置n处存在的元素的引用。 |
32 | 矢量::pop_back
从向量中删除最后一个元素并将向量的大小减少一。 |
33 | 矢量::push_back
在向量末尾插入新元素并将向量大小增加一。 |
34 | 矢量::r开始
返回一个反向迭代器,它指向向量的最后一个元素。 |
35 | 矢量::撕裂
返回一个反向迭代器,它指向向量的反向末端。 |
36 | 矢量::保留
请求保留向量容量至少足以包含n 个元素。 |
37 | 矢量::调整大小
更改矢量的大小。 |
38 | 矢量::shrink_to_fit
请求容器减少其容量以适应其大小。 |
39 | 矢量::大小
返回向量中存在的元素数。 |
40 | 矢量::交换
将向量的内容与向量x的内容交换。 |