news 2026/8/2 17:08:10

C++ vector 容器

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
C++ vector 容器

C++ vector 容器概述

std::vector是 C++ 标准模板库(STL)中的动态数组容器,支持随机访问、动态扩容和高效的元素操作。其底层通过连续内存空间实现,兼具数组的高效性和动态扩展的灵活性。


基本用法

初始化
#include <vector> std::vector<int> vec1; // 空向量 std::vector<int> vec2(5, 10); // 5个元素,初始值为10 std::vector<int> vec3 = {1, 2, 3}; // 列表初始化
常用操作
vec1.push_back(4); // 尾部插入元素 vec1.pop_back(); // 删除尾部元素 vec1.size(); // 返回元素数量 vec1.empty(); // 判断是否为空 vec1[0]; // 随机访问(不检查边界) vec1.at(0); // 带边界检查的访问 vec1.clear(); // 清空所有元素

动态扩容机制

  • vector在插入元素时若容量不足,会自动分配更大的内存(通常为当前容量的 2 倍或 1.5 倍),并将旧元素拷贝到新内存。
  • 可通过reserve()预分配空间以避免频繁扩容:
    vec1.reserve(100); // 预分配100个元素的空间

迭代器与遍历

// 范围for循环(C++11) for (int x : vec1) { std::cout << x << " "; } // 迭代器遍历 for (auto it = vec1.begin(); it != vec1.end(); ++it) { std::cout << *it << " "; }

性能与复杂度

  • 随机访问:O(1)
  • 尾部插入/删除:均摊 O(1)
  • 中间插入/删除:O(n)(需移动后续元素)

与其他容器对比

特性vectorlistdeque
内存布局连续非连续分段连续
随机访问O(1)O(n)O(1)
中间插入/删除O(n)O(1)O(n)

实际应用示例

元素去重
std::sort(vec1.begin(), vec1.end()); vec1.erase(std::unique(vec1.begin(), vec1.end()), vec1.end());
二维动态数组
std::vector<std::vector<int>> matrix(3, std::vector<int>(4)); // 3x4矩阵

注意事项

  • 避免在循环中频繁调用push_back(),优先使用reserve()预分配空间。
  • 插入/删除操作可能导致迭代器失效,需谨慎处理。
  • 需要头文件<vector>和命名空间std
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/25 6:45:15

emwin双缓冲技术实现完整指南

emWin双缓冲技术实现完整指南从一个“撕裂的进度条”说起你有没有遇到过这样的场景&#xff1f;在调试一块工业触摸屏时&#xff0c;用户滑动一个调节条&#xff0c;界面上的数值明明在变化&#xff0c;但显示却像卡顿了一样&#xff0c;甚至出现上下错位的“断裂线”——就像画…

作者头像 李华
网站建设 2026/7/31 12:27:46

右键图片直接转换图片格式,告别繁琐的格式转换(IMGConverter)

IMGConverter是一款图片格式转换工具&#xff0c;这类的工具其实很多&#xff0c;但是操作起来却比较繁琐。 通常情况下我们要“打开软件”—“上传图片”—“选择转换格式”—“转换”—“保存”&#xff0c;但是这款工具简化了这些不必要的程序。打开软件后&#xff0c;点“…

作者头像 李华
网站建设 2026/7/24 15:20:00

利用AI技术降低论文重复率:六大工具改写文本的高效技巧与策略

排名 工具/方法 核心优势 适用场景 1 aibiye 智能降重学术语言优化 初稿完成后深度润色 2 aicheck 多维度查重选题辅助 全程论文质量监控 3 秒篇 一键生成逻辑结构优化 紧急补论文初稿 4 AskPaper 文献解析重点提炼 文献综述与理论支撑 5 知网人工降重 专…

作者头像 李华
网站建设 2026/8/1 12:30:55

【MCP Tool Calling Agent 开发实战】从零构建高效 AI 代理

文章目录目录引言MCP 概述&#xff1a;为什么选择 MCP 构建 Tool Calling Agent&#xff1f;环境安装与项目设置Prerequisites构建 MCP Server 和 Tool实战&#xff1a;集成数据库查询工具文件系统资源集成集成 LLM 与 Agent 开发代码执行优化&#xff1a;Anthropic风格实战示例…

作者头像 李华
网站建设 2026/7/31 12:27:47

UG NX 光顺曲线串合并G1相切线

在 UG NX 中&#xff0c;将多条曲线光顺地合并成一条满足 G1 连续性&#xff08;切线连续&#xff09;的曲线&#xff0c;是进行高质量曲面建模的基础。核心概念&#xff1a;G1 连续性 G1 连续性意味着在两条曲线的连接点处&#xff0c;不仅位置重合&#xff0c;且切线方向相同…

作者头像 李华
网站建设 2026/7/31 12:27:53

论文相似度过高?五个实用技巧帮你高效优化文本内容

科学研究证实&#xff0c;全球变暖与极端气候事件频发具有显著关联性&#xff0c;量化分析显示环境温度升高会直接导致异常天气现象发生概率大幅提升。 首先&#xff0c;咱们聊聊人工降重的基本功 根据最新调研数据&#xff0c;近年来人工智能技术呈现出迅猛的发展态势&#…

作者头像 李华