std::vector

来自cppreference.com
< cpp‎ | container
 
 
 
std::vector
成员函数
原文:
Member functions
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
元素的访问
原文:
Element access
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
迭代器
原文:
Iterators
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
容量
原文:
Capacity
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
修饰符
原文:
Modifiers
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
 
定义于头文件 <vector>
template<

    class T,
    class Allocator = std::allocator<T>

> class vector;

std::vector 是一种序列容器,是对大小可变数组的封装。

数组中的元素是连续存储的,所以除了能够通过迭代器访问外,还可以通过常规的指针偏移量访问元素。换句话说,可以将指向 vector 元素的指针传入以指向数组元素的指针作为参数的函数。

vector 会在需要时自动调整所占内存的大小。与对应的静态数组相比,vector 所占的内存通常要更多,因为它还分配了额外的内存以应对将来可能的扩张。于是,vector 就不必在每次插入元素时都重新分配一次内存了,除非这块预留的内存用尽。已分配内存的总大小可以通过 capacity() 函数查询。所占的额外的内存可以通过调用 shrink_to_fit() 返还给系统。

从性能方面考虑,内存重分配操作的代价通常很大。如果事先知道元素个数,可以使用 reserve() 函数消除重新分配操作。

针对 vector 的各种常见操作的复杂度(效率)如下:

  • 随机访问 - 常数 O(1)
  • 在尾部增删元素 - 平摊(amortized)常数 O(1)}}
  • 增删元素 - 至 vector 尾部的线性距离 O(n)}}

std::vector 满足 ContainerAllocatorAwareContainerSequenceContainerReversibleContainer 的要求。

目录

[编辑] 特化

标准库为 bool 类型提供了特化版本的 std::vector,优化了空间利用率。

节省空间的动态bitset
(类模板) [编辑]

[编辑] 成员类型

成员类型 定义
value_type T [编辑]
allocator_type Allocator [编辑]
size_type 无符号整数类型(通常是 std::size_t[编辑]
difference_type 有符号整数类型(通常是 std::ptrdiff_t[编辑]
reference
Allocator::reference (C++11 前)
value_type& (C++11 起)
[编辑]
const_reference
Allocator::const_reference (C++11 前)
const value_type& (C++11 起)
[编辑]
pointer
Allocator::pointer (C++11 前)
std::allocator_traits<Allocator>::pointer (C++11 起)
[编辑]
const_pointer
Allocator::const_pointer (C++11 前)
std::allocator_traits<Allocator>::const_pointer (C++11 起)
[编辑]
iterator 随机访问迭代器RandomAccessIterator[编辑]
const_iterator 常随机访问迭代器[编辑]
reverse_iterator std::reverse_iterator<iterator> [编辑]
const_reverse_iterator std::reverse_iterator<const_iterator> [编辑]

[编辑] 成员函数

构造vector
(公开成员函数) [编辑]
析构 vector
(公开成员函数) [编辑]
将值赋给容器
(公开成员函数) [编辑]
将值赋给容器
(公开成员函数) [编辑]
返回相关的分配器
(公开成员函数) [编辑]
元素访问
访问指定的元素,同时进行越界检查
(公开成员函数) [编辑]
访问指定的元素
(公开成员函数) [编辑]
访问第一个元素
(公开成员函数) [编辑]
访问最后一个元素
(公开成员函数) [编辑]
返回指向内存中数组第一个元素的指针
(公开成员函数) [编辑]
迭代器
返回指向容器第一个元素的迭代器
(公开成员函数) [编辑]
返回指向容器尾端的迭代器
(公开成员函数) [编辑]
返回一个指向容器最后一个元素的反向迭代器
(公开成员函数) [编辑]
返回一个指向容器前端的反向迭代器
(公开成员函数) [编辑]
容量
检查容器是否为空
(公开成员函数) [编辑]
返回容纳的元素数
(公开成员函数) [编辑]
返回可容纳的最大元素数
(公开成员函数) [编辑]
预留存储空间
(公开成员函数) [编辑]
返回当前存储空间能够容纳的元素数
(公开成员函数) [编辑]
通过释放未使用的内存减少内存的使用
(公开成员函数) [编辑]
修饰符
原文:
Modifiers
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。
删除全部内容
(公开成员函数) [编辑]
插入元素
原文:
inserts elements
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
(C++11)
就地构造元素
(公开成员函数) [编辑]
删除元素
(公开成员函数) [编辑]
将元素添加到容器末尾
(公开成员函数) [编辑]
在容器末尾就地构造元素
(公开成员函数) [编辑]
删除最后一个元素
原文:
removes the last element
文本通过谷歌翻译机器翻译。
你可以帮忙校正和验证翻译。点击此处查看指示。

(公开成员函数) [编辑]
改变容器中可存储元素的个数
(公开成员函数) [编辑]
交换vector的内容
(公开成员函数) [编辑]

[编辑] 非成员函数

根据字典顺序比较 vector 中的值
(函数模板) [编辑]
特化 std::swap 算法
(函数模板) [编辑]

[编辑] 例子

#include <iostream>
#include <vector>
 
int main()
{
    // 创建一个包含整数的向量
    std::vector<int> v = {7, 5, 16, 8};
 
    // 将两个数添加到向量中
    v.push_back(25);
    v.push_back(13);
 
    // 遍历向量并打印其中的值
    for(int n : v) {
        std::cout << n << '\n';
    }
}

输出:

7
5
16
8
25
13