类别:容器 | 组件类型:类型 |
vector<int> V; V.insert(V.begin(), 3); assert(V.size() == 1 && V.capacity() >= 1 && V[0] == 3);
参数 | 描述 | 默认值 |
---|---|---|
T | vector 的值类型:存储在 vector 中的对象类型。 | |
Alloc | 是vector的分配器,用于所有内部内存管理。 | alloc |
成员 | 定义位置 | 描述 |
---|---|---|
value_type | 容器 | 对象类型,T,存储在 vector 中。 |
pointer | 容器 | 指向T. |
reference | 容器 | 对T |
const_reference | 容器 | 对T |
size_type | 容器 | 无符号整型。 |
difference_type | 容器 | 有符号整型。 |
iterator | 容器 | 迭代器,用于遍历一个vector. |
const_iterator | 容器 | 常量迭代器,用于遍历一个vector. |
reverse_iterator | 可逆容器 | 迭代器,用于反向遍历一个vector. |
const_reverse_iterator | 可逆容器 | 常量迭代器,用于反向遍历一个vector. |
iterator begin() | 容器 | 返回一个iterator指向 vector 开头的迭代器。vector. |
iterator end() | 容器 | 返回一个iterator指向 vector 结尾的迭代器。vector. |
const_iterator begin() const | 容器 | 返回一个const_iterator指向 vector 开头的迭代器。vector. |
const_iterator end() const | 容器 | 返回一个const_iterator指向 vector 结尾的迭代器。vector. |
reverse_iterator rbegin() | 可逆容器 | 返回一个reverse_iterator指向反转 vector 开头的迭代器。 |
reverse_iterator rend() | 可逆容器 | 返回一个reverse_iterator指向反转 vector 结尾的迭代器。 |
const_reverse_iterator rbegin() const | 可逆容器 | 返回一个const_reverse_iterator指向反转 vector 开头的迭代器。 |
const_reverse_iterator rend() const | 可逆容器 | 返回一个const_reverse_iterator指向反转 vector 结尾的迭代器。 |
size_type size() const | 容器 | 返回 vector 的大小。vector. |
size_type max_size() const | 容器 | 返回 vector 的最大可能大小。vector. |
size_type capacity() const | vector | 见下文。 |
bool empty() const | 容器 | 如果 vector 的大小是,则返回 truevector。0. |
reference operator[](size_type n) | 随机访问容器 | 返回n个元素。 |
const_reference operator[](size_type n) const | 随机访问容器 | 返回n个元素。 |
vector() | 容器 | 创建一个空的 vector。 |
vector(size_type n) | 序列 | 创建一个具有n个元素的 vector。 |
vector(size_type n, const T& t) | 序列 | 创建一个具有n的t. |
的副本。 | 容器 | vector(const vector&) |
template <class InputIterator> vector(InputIterator, InputIterator) [1] |
序列 | 复制构造函数。 |
创建一个具有一个范围副本的 vector。 | 容器 | ~vector() |
析构函数。 | 容器 | vector& operator=(const vector&) |
赋值运算符 | vector | 见下文。 |
void reserve(size_t) | 序列 | reference front() |
返回第一个元素。 | 序列 | reference front() |
const_reference front() const | reference back() | 后插入序列 |
返回最后一个元素。 | reference back() | 后插入序列 |
const_reference back() const | reference back() | void push_back(const T&) |
在末尾插入一个新元素。 | reference back() | void pop_back() |
删除最后一个元素。 | 容器 | void swap(vector&) |
iterator insert(iterator pos, const T& x) |
序列 | 交换两个 vector 的内容。在pos之前插入. |
template <class InputIterator> void insert(iterator pos, InputIterator f, InputIterator l) [1] |
序列 | x插入范围pos之前插入. |
void insert(iterator pos, size_type n, const T& x) |
序列 | 交换两个 vector 的内容。n的在pos之前插入. |
[first, last) | 序列 | iterator erase(iterator pos)之前插入. |
删除位置为 | 序列 | iterator erase(iterator first, iterator last)插入范围 |
删除范围 | 序列 | void clear() |
删除所有元素。 | 序列 | void resize(n, t = T())n. |
bool operator==(const vector&, const vector&) |
在末尾插入或删除元素,使大小变为 | 前向容器 |
bool operator<(const vector&, const vector&) |
在末尾插入或删除元素,使大小变为 | 测试两个 vector 是否相等。这是一个全局函数,而不是成员函数。 |
成员 | 描述 |
---|---|
size_type capacity() const | 这些成员没有在 随机访问容器 和 后插入序列 要求中定义,而是特定于为其分配了内存的元素数量。capacity()始终大于或等于. [2] [3] |
size() | 。nvoid reserve(size_type n)为其分配了内存的元素数量。如果为其分配了内存的元素数量。小于或等于n,则此调用没有效果。否则,它将请求分配更多内存。如果请求成功,则为其分配了内存的元素数量。大于或等于始终大于或等于;否则, |
[1] 此成员函数依赖于成员模板函数,目前(1998 年初)并非所有编译器都支持。如果您的编译器支持成员模板,则可以使用任何类型的 输入迭代器 调用此函数。但是,如果您的编译器尚不支持成员模板,则参数必须是const value_type*类型。始终大于或等于[2] 如果插入的元素超过为其分配了内存的元素数量。capacity() - size()
,则将自动重新分配内存。重新分配不会更改为其分配了内存的元素数量。, vector,也不会更改 vector 中任何元素的值。但是,它会增加为其分配了内存的元素数量。,并且会使 [5] 指向 vector 的任何迭代器失效。
[4] [3] 当需要增加时,通常会将其增加两倍。重要的是,增长量与当前成比例,而不是一个固定的常数:在前一种情况下,将一系列元素插入 vector 是一个线性时间操作,而在后一种情况下,它是一个二次时间操作。Reserve()vector手动导致重新分配。使用成比例,而不是一个固定的常数:在前一种情况下,将一系列元素插入 vector 是一个线性时间操作,而在后一种情况下,它是一个二次时间操作。reserve()
的主要原因是效率:如果您知道 vector 最终必须增长到的容量,那么通常一次性分配该内存比依赖于自动重新分配方案更有效。使用成比例,而不是一个固定的常数:在前一种情况下,将一系列元素插入 vector 是一个线性时间操作,而在后一种情况下,它是一个二次时间操作。的另一个原因是您可以控制迭代器的失效。 [5]