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的内容交换。

非成员重载函数

先生。 方法及说明
1 运算符==

测试两个向量是否相等。

2 运算符!=

测试两个向量是否相等。

3 运算符 <

测试第一个向量是否小于其他向量。

4 运算符 <=

测试第一个向量是否小于或等于其他向量。

5 运算符>

测试第一个向量是否大于其他向量。

6 运算符 >=

测试第一个向量是否大于或等于其他向量。

7 交换

交换两个向量的内容。