C++ 库 - <vector>



简介

向量是能够改变大小的顺序容器。容器是保存相同类型数据的对象。顺序容器严格按照线性顺序存储元素。

向量将元素存储在连续的内存位置,并允许使用下标运算符 [] 直接访问任何元素。与数组不同,向量可以在运行时根据需要缩小或扩展。向量的存储由系统自动处理。

为了支持运行时的收缩和扩展功能,向量容器可能会分配一些额外的存储空间以适应可能的增长,因此容器的实际容量大于大小。因此,与数组相比,向量消耗更多的内存,以换取以有效的方式管理存储和动态增长。

零大小的向量也是有效的。在这种情况下,vector.begin() 和 vector.end() 指向相同的位置。但是调用 front() 或 back() 的行为是未定义的。

定义

以下是来自 <vector> 头文件的 std::vector 的定义

template < class T, class Alloc = allocator<T> > class vector;

参数

  • T - 包含的元素的类型。

    T 可以被任何其他数据类型替换,包括用户定义的类型。

  • Alloc - 分配器对象的类型。

    默认情况下,使用分配器类模板,它定义了最简单的内存分配模型并且与值无关。

成员类型

以下成员类型可以用作成员函数的参数或返回类型。

序号 成员类型 定义
1 value_type T(模板的第一个参数)
2 allocator_type Alloc(模板的第二个参数)
3 reference value_type&
4 const_reference const value_type&
5 pointer value_type*
6 const_pointer const value_type*
7 iterator 指向 value_type 的随机访问迭代器
8 const_iterator 指向 const value_type 的随机访问迭代器
9 reverse_iterator std::reverse_iterator <iterator>
10 const_reverse_iterator std::reverse_iterator <const_iterator>
11 size_type size_t
12 difference_type ptrdiff_t

来自 <vector> 的函数

以下是来自 <vector> 头文件的所有方法列表。

构造函数

序号 方法 & 描述
1 vector::vector 默认构造函数

构造一个空容器,其中包含零个元素。

2 vector::vector 填充构造函数

构造一个包含n个元素并将val分配给每个元素的容器。

3 vector::vector 范围构造函数

构造一个包含从firstlast

4 vector::vector 范围内的所有元素的容器。

构造一个容器,其中包含现有容器x

5 vector::vector 中存在的每个元素的副本。

使用移动语义构造容器的内容。

6 vector::vector 初始化列表构造函数

从初始化列表构造容器。

析构函数

序号 方法 & 描述
1 vector::~vector

通过释放容器内存来销毁容器。

成员函数

序号 方法 & 描述
1 vector::assign 填充版本

通过替换旧值将新值分配给向量元素。

2 vector::assign 范围版本

通过替换旧值将新值分配给向量元素。

3 vector::assign 初始化列表版本

通过替换旧值将新值分配给向量元素。

4 vector::at

返回向量中位置n处存在的元素的引用。

5 vector::back

返回对向量最后一个元素的引用。

6 vector::begin

返回一个指向向量第一个元素的随机访问迭代器。

7 vector::capacity

返回分配存储的大小,以元素表示。

8 vector::cbegin

返回一个指向向量开头的常量随机访问迭代器。

9 vector::cend

返回一个指向向量开头的常量随机访问迭代器。

10 vector::clear

通过从向量中删除所有元素并设置向量的大小为零来销毁向量。

11 vector::crbegin

返回一个指向容器反向开头的常量反向迭代器。

12 vector::crend

返回一个指向向量反向末尾的常量反向迭代器。

13 vector::data

返回指向向量容器第一个元素的指针。

14 vector::emplace

通过在position.

15 处插入新元素来扩展容器

在向量末尾插入新元素。

16 vector::empty

测试向量是否为空。

17 vector::end

返回一个指向向量容器中最后一个元素的下一个位置的迭代器。

18 vector::erase位置版本

从向量中删除单个元素。

19 vector::erase范围版本

从向量中删除单个元素。

20 vector::front

返回对向量第一个元素的引用。

21 vector::get_allocator

返回与向量关联的分配器。

22 vector::insert 单个元素版本

通过在position

23 vector::insert 填充版本

通过在容器中插入新元素来扩展向量。

24 vector::insert 范围版本

通过在容器中插入新元素来扩展向量。

25 vector::insert 移动版本

通过在容器中插入新元素来扩展向量。

26 vector::insert 初始化列表版本

通过在容器中插入新元素来扩展向量。

27 vector::max_size

返回向量可以容纳的最大元素数。

28 vector::operator= 复制版本

通过替换旧值将新内容分配给向量,并在必要时修改大小。

29 vector::operator= 移动版本

通过替换旧值将新内容分配给向量,并在必要时修改大小。

30 vector::operator = 初始化列表版本

通过替换旧值将新内容分配给向量,并在必要时修改大小。

31 vector::operator[]

返回向量中位置n.

32 处存在的元素的引用。

从向量中删除最后一个元素,并将向量的大小减少一个。

33 vector::push_back

在向量末尾插入新元素,并将向量的大小增加一个。

34 vector::rbegin

返回一个指向向量最后一个元素的反向迭代器。

35 vector::rend

返回一个指向向量反向末尾的反向迭代器。

36 vector::reserve

请求将向量的容量至少保留足够的空间以容纳n个元素。

37 vector::resize

更改向量的大小。

38 vector::shrink_to_fit

请求容器将其容量减小以适合其大小。

39 vector::size

返回向量中存在的元素数量。

40 vector::swap

将向量的内容与向量x.

的内容交换。

序号 方法 & 描述
1 非成员重载函数

测试两个向量是否相等。

2 operator !=

测试两个向量是否相等。

3 operator <

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

4 operator <=

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

5 operator >

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

6 operator >=

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

7 swap

交换两个向量的内容。

广告