vector有哪些函数(vector函数列表)
作者:路由通
|

发布时间:2025-05-02 13:58:51
标签:
在C++标准模板库(STL)中,std::vector作为动态数组容器,其功能丰富性与灵活性使其成为最常使用的容器之一。它不仅支持随机访问和高效尾部操作,还通过多种成员函数满足不同场景的需求。从构造与初始化、元素访问、内存管理到高级操作,v

在C++标准模板库(STL)中,std::vector作为动态数组容器,其功能丰富性与灵活性使其成为最常使用的容器之一。它不仅支持随机访问和高效尾部操作,还通过多种成员函数满足不同场景的需求。从构造与初始化、元素访问、内存管理到高级操作,vector的函数体系覆盖了容器生命周期的各个环节。本文将从八个维度深入剖析vector的核心函数,并通过对比表格揭示其设计逻辑与使用差异,帮助开发者精准选择适配的功能。
一、构造与初始化函数
vector的构造函数支持多种初始化方式,适应不同场景需求:
函数类型 | 功能描述 | 典型参数 | 特点 |
---|---|---|---|
默认构造 | 创建空容器 | 无 | 初始size=0, capacity=0 |
填充构造 | 按指定数量填充元素 | n, value | 调用拷贝构造n次 |
迭代器构造 | 通过迭代器范围初始化 | [first, last) | 支持任意容器迭代器 |
拷贝构造 | 复制现有容器 | 另一个vector | 深拷贝元素与容量 |
示例:使用填充构造创建包含5个元素值为10的vector:
std::vectorvec(5, 10);
二、元素访问函数
vector提供两种核心访问方式,各有适用场景:
函数 | 功能 | 异常安全性 | 用途 |
---|---|---|---|
operator[] | 下标访问 | 不检查越界 | 高性能随机访问 |
at() | 安全访问 | 抛出out_of_range | 边界校验场景 |
front()/back() | 首尾元素 | 安全访问 | 队列式操作 |
注意:operator[]在调试模式下建议替换为at(),避免未定义行为。
三、修改器函数
vector通过修改器实现元素增删改操作,核心函数对比如下:
函数 | 功能 | 参数 | 性能特征 |
---|---|---|---|
push_back() | 尾部追加 | 元素值 | 均摊常数时间 |
emplace_back() | 原地构造 | 构造参数 | 减少临时对象 |
insert() | 任意位置插入 | 迭代器+元素 | 线性时间复杂度 |
pop_back() | 删除尾部元素 | 无 | O(1)时间复杂度 |
最佳实践:优先使用emplace_back构造复杂对象,避免冗余拷贝。
四、迭代器相关函数
迭代器是访问vector的核心工具,关键函数包括:
- begin()/end():获取正向迭代器范围
- rbegin()/rend():获取逆向迭代器范围
- cbegin()/cend():获取常量迭代器
- data():获取底层数组指针
特性对比:data()返回的指针与&vec[0]等价,但更适用于C API交互。
五、容量管理函数
vector的内存分配策略通过以下函数暴露控制接口:
函数 | 功能 | 影响 | 典型调用时机 |
---|---|---|---|
capacity() | 当前容量查询 | 无变化 | 预判扩容需求 |
reserve() | 预分配容量 | 可能增加capacity | 批量插入前 |
resize() | 调整尺寸 | 可能改变size/capacity | 精确控制元素数量 |
shrink_to_fit() | 收缩至当前尺寸 | 减少capacity | 释放多余内存 |
性能提示:频繁调用reserve可减少重分配次数,提升性能。
六、元素操作函数
对已存储元素的批量操作函数对比:
函数 | 功能 | 参数 | 时间复杂度 |
---|---|---|---|
assign() | 重新赋值 | 迭代器范围/n+value | O(n) |
swap() | 交换容器内容 | 另一个vector | O(1) |
clear() | 清空元素 | 无 | O(n)(调用析构) |
使用建议:clear()后容量保留,需配合shrink_to_fit释放内存。
七、非成员函数支持
STL算法与非成员函数扩展了vector的功能:
- std::swap(vec1, vec2):全局交换两容器内容
- 关系运算符:支持==, !=, <, <=等比较操作
- std::move(vec):生成右值引用进行移动语义
注意:关系运算符要求元素类型支持对应比较操作。
辅助性功能函数提供容器状态查询与资源管理:
函数 | |||
---|---|---|---|
> | |||
> | |||
>> |
相关文章
Adobe作为PDF技术的开创者,其PDF转Word功能始终是用户关注的焦点。通过分析其多平台解决方案,可发现Adobe在文档转换领域兼具技术优势与局限性。核心能力体现在三个方面:首先,Adobe Acrobat Pro/DC提供原生转换功
2025-05-02 13:58:47

抖音作为当前最具商业价值的短视频平台之一,其电商生态已形成“内容种草-直播转化-私域沉淀”的完整闭环。平台通过算法推荐机制放大内容传播力,结合直播实时互动与货架展示功能,构建了独特的“兴趣电商”模式。商家需同时掌握短视频内容创作、直播运营、
2025-05-02 13:58:47

微信小程序认证是开发者获取平台信任标识、解锁高级功能的核心环节。作为微信生态的重要准入机制,认证流程不仅涉及资质核验,更直接影响小程序的运营权限与用户信任度。认证过程需兼顾企业主体合规性、支付接口安全性及内容风险管控,通过多维度审核构建起平
2025-05-02 13:58:34

华为路由器作为新一代网络设备,在性能、安全性及智能化管理方面展现出显著优势。其采用自研高性能芯片与智能天线技术,可提供更广的覆盖范围和更稳定的信号传输,尤其在多设备并发场景下表现突出。通过HarmonyOS生态融合,华为路由器支持一键组网、
2025-05-02 13:58:25

在短视频流量红利时代,抖音已成为全民参与的内容创作与变现平台。学习如何高效"刷"抖音并实现盈利,本质是通过掌握平台算法逻辑、内容创作规律及商业变现模式,将用户行为转化为可持续收益。这一过程涉及账号定位、内容生产、流量运营、数据优化、商业变现
2025-05-02 13:58:22

cos函数动画作为数学与视觉艺术结合的典型代表,在数据可视化、教育传播和数字艺术领域具有重要价值。其核心通过动态展示余弦函数的周期性变化规律,将抽象的数学概念转化为直观的视觉体验。该动画类型不仅能够精准呈现振幅、频率、相位等参数的实时变化,
2025-05-02 13:58:15

热门推荐
资讯中心: