C++ Library - <vector>
介绍 (Introduction)
向量是可以改变大小的序列容器。 容器是保存相同类型数据的对象。 序列容器严格按线性顺序存储元素。
Vector将元素存储在连续的内存位置,并允许使用下标operator []直接访问任何元素。 与数组不同,vector可以在运行时根据需要缩小或扩展。 矢量的存储是自动处理的。
为了在运行时支持收缩和扩展功能,向量容器可以分配一些额外的存储空间以适应可能的增长,因此容器的实际容量大于大小。 因此,与数组相比,vector可以消耗更多内存,以换取管理存储和以高效方式动态增长的能力。
零大小的向量也是有效的。 在那种情况下,vector.begin()和vector.end()指向相同的位置。 但是调用front()或back()的行为是未定义的。
定义 (Definition)
下面是
template < class T, class Alloc = allocator<T> > class vector;
参数 (Parameters)
T - 包含的元素的类型。
T可以由包括用户定义类型的任何其他数据类型代替。
Alloc - 分配器对象的类型。
默认情况下,使用allocator类模板,该模板定义最简单的内存分配模型,并且与值无关。
成员类型 (Member types)
以下成员类型可以用作参数或按成员函数返回类型。
Sr.No. | 会员类型 | 定义 |
---|---|---|
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 |
来自的函数
下面是
构造函数 (Constructors)
Sr.No. | 方法和描述 |
---|---|
1 | vector::vector 默认构造函数 构造一个空元素,零元素。 |
2 | vector::vector 填充构造函数 构造一个具有n个元素的容器,并为每个元素赋予val 。 |
3 | vector::vector 范围构造函数 构造一个容器,其中包含从头到尾范围内的任意数量的元素。 |
4 | vector::vector 复制构造函数 构造一个容器,其中包含现有容器x中存在的每个元素的副本。 |
5 | vector::vector 移动构造函数 使用move语义构造具有其他内容的容器。 |
6 | vector::vector 初始化列表构造函数 从初始化列表构造容器。 |
Destructor
Sr.No. | 方法和描述 |
---|---|
1 | vector::~vector 通过释放容器内存来销毁容器。 |
成员函数 (Member functions)
Sr.No. | 方法和描述 |
---|---|
1 | vector::assign fill version 通过替换旧元素为向量元素分配新值。 |
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 通过在位置插入新元素来扩展容器。 |
15 | vector::emplace_back 在向量的末尾插入新元素。 |
16 | vector::empty 测试向量是否为空。 |
17 | vector::end 返回一个迭代器,它指向向量容器中的past-the-end元素 。 |
18 | vector::erase 位置版本 从向量中删除单个元素。 |
19 | vector::erase 范围版本 从向量中删除单个元素。 |
20 | vector::front 返回对向量的第一个元素的引用。 |
21 | vector::get_allocator 返回与vector关联的分配器。 |
22 | vector::insert 单个元素版本 通过在位置插入新元素来扩展迭代器。 |
23 | vector::insert 填充版本 通过在容器中插入新元素来扩展矢量。 |
24 | vector::insert 范围版本 通过在容器中插入新元素来扩展矢量。 |
25 | vector::insert 移动版本 通过在容器中插入新元素来扩展矢量。 |
26 | vector::insert 初始化列表版本 通过在容器中插入新元素来扩展矢量。 |
27 | vector::max_size 返回vector可以保存的最大元素数。 |
28 | vector::operator= 复制版 通过替换旧的内容将新内容分配给矢量,并在必要时修改大小。 |
29 | vector::operator= 移动版本 通过替换旧的内容将新内容分配给矢量,并在必要时修改大小。 |
30 | vector :: operator = 初始化列表版本 通过替换旧的内容将新内容分配给矢量,并在必要时修改大小。 |
31 | vector::operator[] 返回对位置n处的元素的引用。 |
32 | vector::pop_back 从向量中移除最后一个元素,并将向量的大小减小一个。 |
33 | vector::push_back 在向量的末尾插入新元素,并将向量的大小增加1。 |
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的内容交换向量的内容。 |
非成员重载函数 (Non-member overloaded functions)
Sr.No. | 方法和描述 |
---|---|
1 | operator == 测试两个向量是否相等。 |
2 | operator!= 测试两个向量是否相等。 |
3 | 运算符< 测试第一个向量是否小于其他向量。 |
4 | operator <= 测试第一个向量是否小于或等于其他向量。 |
5 | 运算符> 测试第一个向量是否大于其他向量。 |
6 | operator> = 测试第一个向量是否大于或等于其他向量。 |
7 | swap 交换两个向量的内容。 |