Cpp Standard Library 简明教程

C++ Library - <vector>

Introduction

向量是可更改大小的序列容器。 容器是保存相同类型数据的对象。 序列容器将元素严格存储在线性序列中。

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

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

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

Definition

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

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

Parameters

  1. T − 包含元素的类型。T 可以用包括用户自定义类型在内的任何其他数据类型替换。

  2. Alloc − 分配器对象类型。默认情况下,使用分配器类模板,该模板定义最简单的内存分配模型,并且与值无关。

Member types

以下成员类型可作为参数或返回类型,由成员函数使用。

Sr.No.

Member types

Definition

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

值类型的随机访问迭代器

8

const_iterator

const 值类型的随机访问迭代器

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

Functions from <vector>

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

Constructors

Sr.No.

Method & Description

1

vector::vector default constructor 构造一个容器,容器是空的,没有元素。

2

vector::vector fill constructor 构造一个容器,其中有 n 个元素,并且将 val 分配给每个元素。

3

vector::vector range constructor 构造一个容器,其中有 range 中 first 到 last 的元素。

4

vector::vector copy constructor 构造一个容器,其中包含现有容器 x 中的每个元素的副本。

5

vector::vector move constructor 使用移动语义构造一个包含另一个容器的内容的容器。

6

vector::vector initializer list constructor 从初始化程序列表构造一个容器。

Destructor

Sr.No.

Method & Description

1

vector::~vector Destroys container by deallocating container memory.

Member functions

Sr.No.

Method & Description

1

vector::assign fill version 通过替换旧元素向 vector 元素分配新值。

2

vector::assign range version 通过替换旧元素向 vector 元素分配新值。

3

vector::assign initializer list version 通过替换旧元素向 vector 元素分配新值。

4

vector::at 返回 vector 中 n 处元素的引用。

5

vector::back 返回 vector 最后元素的引用。

6

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

7

vector::capacity 以元素为单位返回已分配存储的大小。

8

vector::cbegin 返回指向 vector 开始的常量随机访问迭代器。

9

vector::cend 返回指向 vector 开始的常量随机访问迭代器。

10

vector::clear 通过删除所有元素来破坏向量,并将向量的尺寸设为 0。

11

vector::crbegin 返回指向容器反向开始的常量反向迭代器。

12

vector::crend 返回一个指向向量反向结束的常量反向迭代器。

13

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

14

vector::emplace 通过插入新元素在指定位置来扩展容器。

15

vector::emplace_back 在向量的末尾插入新元素。

16

vector::empty 测试向量是否为空。

17

vector::end 返回指向向量容器中超出结束元素的迭代器。

18

vector::erase 位置版本移除向量中的单个元素。

19

vector::erase 范围版本移除向量中的单个元素。

20

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

21

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

22

vector::insert 单个元素版本通过在指定位置插入新元素来扩展迭代器。

23

vector::insert 填充版本通过在容器中插入新元素,来扩展向量。

24

vector::insert 范围版本通过在容器中插入新元素,来扩展向量。

25

vector::insert 移动版本通过在容器中插入新元素,来扩展向量。

26

vector::insert 初始值列表版本通过在容器中插入新元素,来扩展向量。

27

vector::max_size 返回向量可容纳的最大元素数。

28

vector::operator= 拷贝版本为向量指派新内容,取代旧内容,必要时修改尺寸。

29

vector::operator= move 版本使用新内容替换旧内容并且根据需要修改大小。

30

vector::operator = initializer list 版本使用新内容替换旧内容并且根据需要修改大小。

31

vector::operator[] 返回一个指向位置 n 的元素的引用。

32

vector::pop_back 移除 vector 的最后一个元素并使 vector 的大小减一。

33

vector::push_back 在 vector 的末尾插入一个新元素,使 vector 的大小增加一。

34

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

35

vector::rend 返回一个指向 vector 反向末尾的反向迭代器。

36

vector::reserve 要求保留的 vector 的容量至少足以包含 n 个元素。

37

vector::resize 更改 vector 的大小。

38

vector::shrink_to_fit 要求容器减少其容量以适应其大小。

39

vector::size 返回 vector 中存在的元素数。

40

vector::swap 将 vector 的内容与 vector x 的内容交换。

Non-member overloaded functions

Sr.No.

Method & Description

1

[role="bare"]../cpp_standard_library/cpp_vector_operator_equal_to.html测试两个 vector 是否相等。

2

operator != 测试两个 vector 是否相等。

3

operator < 测试第一个 vector 是否小于另一个 vector。

4

operator ⇐ 测试第一个 vector 是否小于或等于另一个 vector。

5

operator > 测试第一个 vector 是否大于另一个 vector。

6

operator >= 测试第一个 vector 是否大于或等于另一个 vector。

7

swap 交换两个 vector 的内容。