跳到主要内容C++ STL vector 常用函数接口详解 | 极客日志C++算法
C++ STL vector 常用函数接口详解
综述由AI生成C++ STL vector 容器提供了动态数组的核心功能,包括头文件引入、类模板定义及成员类型。内容涵盖构造与析构、赋值操作、元素访问(含边界检查)、迭代器使用、容量管理(如 reserve、shrink_to_fit)以及修改器(push_back、insert、erase 等)。通过具体代码示例展示各接口用法与注意事项,适用于 C++ 开发者快速查阅 vector 标准库 API。
热情28 浏览 vector 向量(动态数组)
头文件
#include <vector>
定义
template <class T, class Allocator = std::allocator<T>>
class vector;
成员类型
| 成员类型 | 定义 |
|---|
| value_type | T |
| allocator_type | Allocator |
| size_type | 无符号整数类型(通常为 std::size_t) |
| reference | value_type& |
| const_reference | const value_type& |
成员函数
构造、析构与赋值
构造函数
vector();
explicit vector(const Allocator& alloc);
explicit vector(size_type count, const Allocator& alloc = Allocator());
(size_type count, T& value, Allocator& alloc = ());
vector
const
const
Allocator
template<class InputIt>
vector(InputIt first, InputIt last, const Allocator& alloc = Allocator());
vector(const vector& other);
vector(const vector& other, const Allocator& alloc);
vector(vector&& other, const Allocator& alloc);
vector(std::initializer_list<T> init, const Allocator& alloc = Allocator());
析构函数
operator= : 将值赋给容器
vector& operator=(const vector& other);
vector& operator=(vector&& other);
vector& operator=(std::initializer_list<value_type> ilist);
assign : 将值赋给容器
void assign(size_type count, const T& value);
template<class InputIt>
void assign(InputIt first, InputIt last);
void assign(std::initializer_list<T> ilist);
get_allocator : 返回关联的分配器
allocator_type get_allocator() const;
assign_range (C++23) : 将一个范围的值赋给容器
template<container-compatible-range<T> R>
constexpr void assign_range(R&& rg);
元素访问
operator[] : 访问指定的元素
reference operator[](size_type pos);
const_reference operator[](size_type pos) const;
at : 访问指定的元素,带边界检查
reference at(size_type pos);
const_reference at(size_type pos) const;
front : 访问第一个元素
const_reference front() const;
back : 访问最后一个元素
const_reference back() const;
data : 直接访问底层连续存储
迭代器
begin, cbegin (C++11) : 返回指向起始的迭代器
const_iterator begin() const;
const_iterator cbegin() const noexcept;
end, cend (C++11) : 返回指向末尾的迭代器
const_iterator end() const noexcept;
const_iterator cend() const noexcept;
rbegin, crbegin (C++11) : 返回指向起始的逆向迭代器
reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
const_reverse_iterator crbegin() const noexcept;
rend, crend (C++11) : 返回指向末尾的逆向迭代器
const_reverse_iterator rend() const;
const_reverse_iterator crend() const noexcept;
容量
size : 返回元素数量
empty : 检查容器是否为空
capacity : 返回当前已分配存储空间中可容纳的元素数量
size_type capacity() const;
reserve : 预留存储空间
void reserve(size_type new_cap);
shrink_to_fit : 通过释放未使用的内存来减少内存使用
max_size : 返回元素的最大可能数量
size_type max_size() const;
修改器
push_back : 添加元素到结尾
void push_back(const T& value);
void push_back(T&& value);
pop_back : 移除末元素
resize : 更改存储的元素数量
void resize(size_type count);
void resize(size_type count, const value_type& value);
insert : 插入元素
iterator insert(const_iterator pos, const T& value);
iterator insert(const_iterator pos, T&& value);
iterator insert(const_iterator pos, size_type count, const T& value);
template<class InputIt>
iterator insert(const_iterator pos, InputIt first, InputIt last);
iterator insert(const_iterator pos, std::initializer_list<T> ilist);
erase : 擦除元素
iterator erase(iterator pos);
iterator erase(const_iterator pos);
iterator erase(iterator first, iterator last);
iterator erase(const_iterator first, const_iterator last);
clear : 清除内容
swap : 交换内容
void swap(vector& other);
emplace (C++11) : 就地构造元素
template<class... Args>
iterator emplace(const_iterator pos, Args&&... args);
emplace_back (C++11) : 就地构造元素于结尾
template<class... Args>
void emplace_back(Args&&... args);
insert_range (C++23) : 插入元素范围
template<container-compatible-range<T> R>
constexpr iterator insert_range(const_iterator pos, R&& rg);
append_range (C++23) : 添加一个元素范围到结尾
template<container-compatible-range<T> R>
constexpr void append_range(R&& rg);
相关免费在线工具
- 加密/解密文本
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
- Gemini 图片去水印
基于开源反向 Alpha 混合算法去除 Gemini/Nano Banana 图片水印,支持批量处理与下载。 在线工具,Gemini 图片去水印在线工具,online
- Base64 字符串编码/解码
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
- Base64 文件转换器
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
- Markdown转HTML
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
- HTML转Markdown
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online