0

0

C++ vector用法详解_C++动态数组vector常用操作

尼克

尼克

发布时间:2025-12-26 13:21:07

|

958人浏览过

|

来源于php中文网

原创

vector是C++ STL中动态数组容器,需包含头文件,支持自动内存管理与动态增删元素。可定义为空、指定大小、初值或列表初始化,还能拷贝构造。常用操作包括push_back、pop_back、size、empty、front、back、at、insert、erase等,支持下标访问与迭代器遍历,推荐使用范围for循环。内部连续存储,容量不足时自动扩容,可用reserve预分配空间以提升性能,shrink_to_fit可缩减容量。掌握vector操作有助于提高编程效率与程序稳定性。

c++ vector用法详解_c++动态数组vector常用操作

vector 是 C++ 标准模板库(STL)中非常重要的容器之一,它提供了动态数组的功能,能够自动管理内存,支持在运行时动态添加或删除元素。相比普通数组,vector 更加灵活、安全,是日常编程中使用频率极高的数据结构。

1. vector 的基本定义与初始化

要使用 vector,需要包含头文件 #include 。以下是常见的定义和初始化方式:

  • vector v; // 创建一个空的整型 vector
  • vector v(5); // 创建包含 5 个元素的 vector,初始值为 0
  • vector v(5, 10); // 创建 5 个元素,每个值都是 10
  • vector v = {1, 2, 3, 4, 5}; // 列表初始化(C++11 起)
  • vector v2(v); // 拷贝构造,v2 是 v 的副本

2. 常用操作与成员函数

vector 提供了丰富的成员函数来操作数据,以下是一些最常用的:

  • v.push_back(x); // 在末尾添加一个元素 x
  • v.pop_back(); // 删除最后一个元素(不返回值)
  • v.size(); // 返回当前元素个数
  • v.empty(); // 判断是否为空,返回 bool
  • v[i]; // 随机访问第 i 个元素(不检查越界)
  • v.at(i); // 访问第 i 个元素,会做越界检查,越界抛出异常
  • v.front(); // 返回第一个元素
  • v.back(); // 返回最后一个元素
  • v.clear(); // 清空所有元素
  • v.insert(it, x); // 在迭代器 it 位置插入元素 x
  • v.erase(it); // 删除迭代器 it 所指元素
  • v.swap(v2); // 与另一个 vector 交换内容

示例代码:

立即学习C++免费学习笔记(深入)”;

#include 
#include 
using namespace std;

int main() {
    vector v;
    v.push_back(10);
    v.push_back(20);
    v.push_back(30);

    cout << "大小: " << v.size() << endl;
    cout << "第一个元素: " << v.front() << endl;
    cout << "最后一个元素: " << v.back() << endl;

    for (int i = 0; i < v.size(); ++i) {
        cout << v[i] << " ";
    }
    cout << endl;

    v.pop_back();
    cout << "删除最后一个后大小: " << v.size() << endl;
    return 0;
}

3. 迭代器的使用

vector 支持使用迭代器遍历元素,这是 STL 容器的通用方式。

SPLASH
SPLASH

将音乐制作的乐趣带给每个人。

下载
  • begin():指向第一个元素的迭代器
  • end():指向最后一个元素的下一个位置
  • rbegin()rend():反向迭代器

示例:

for (auto it = v.begin(); it != v.end(); ++it) {
    cout << *it << " ";
}

或使用范围 for 循环(推荐):

for (int x : v) {
    cout << x << " ";
}

4. 动态扩容机制

vector 内部使用连续内存存储元素,当容量不足时会自动重新分配更大的空间,并将原数据复制过去。虽然这个过程对用户透明,但频繁插入可能导致性能问题。

  • v.capacity(); // 查看当前容量(可容纳多少元素而不需重新分配)
  • v.reserve(n); // 预分配至少 n 个元素的空间,避免频繁扩容
  • v.shrink_to_fit(); // 尝试减少容量以匹配实际大小(C++11)

建议在已知元素数量时提前 reserve,提升效率。

基本上就这些。掌握 vector 的常用操作能极大提高编码效率和程序稳定性。

相关专题

更多
string转int
string转int

在编程中,我们经常会遇到需要将字符串(str)转换为整数(int)的情况。这可能是因为我们需要对字符串进行数值计算,或者需要将用户输入的字符串转换为整数进行处理。php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

311

2023.08.02

int占多少字节
int占多少字节

int占4个字节,意味着一个int变量可以存储范围在-2,147,483,648到2,147,483,647之间的整数值,在某些情况下也可能是2个字节或8个字节,int是一种常用的数据类型,用于表示整数,需要根据具体情况选择合适的数据类型,以确保程序的正确性和性能。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

512

2024.08.29

c++怎么把double转成int
c++怎么把double转成int

本专题整合了 c++ double相关教程,阅读专题下面的文章了解更多详细内容。

46

2025.08.29

C++中int的含义
C++中int的含义

本专题整合了C++中int相关内容,阅读专题下面的文章了解更多详细内容。

182

2025.08.29

treenode的用法
treenode的用法

​在计算机编程领域,TreeNode是一种常见的数据结构,通常用于构建树形结构。在不同的编程语言中,TreeNode可能有不同的实现方式和用法,通常用于表示树的节点信息。更多关于treenode相关问题详情请看本专题下面的文章。php中文网欢迎大家前来学习。

529

2023.12.01

C++ 高效算法与数据结构
C++ 高效算法与数据结构

本专题讲解 C++ 中常用算法与数据结构的实现与优化,涵盖排序算法(快速排序、归并排序)、查找算法、图算法、动态规划、贪心算法等,并结合实际案例分析如何选择最优算法来提高程序效率。通过深入理解数据结构(链表、树、堆、哈希表等),帮助开发者提升 在复杂应用中的算法设计与性能优化能力。

2

2025.12.22

虚拟号码教程汇总
虚拟号码教程汇总

本专题整合了虚拟号码接收验证码相关教程,阅读下面的文章了解更多详细操作。

30

2025.12.25

错误代码dns_probe_possible
错误代码dns_probe_possible

本专题整合了电脑无法打开网页显示错误代码dns_probe_possible解决方法,阅读专题下面的文章了解更多处理方案。

20

2025.12.25

网页undefined啥意思
网页undefined啥意思

本专题整合了undefined相关内容,阅读下面的文章了解更多详细内容。后续继续更新。

37

2025.12.25

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 0.6万人学习

Rust 教程
Rust 教程

共28课时 | 3.8万人学习

Git 教程
Git 教程

共21课时 | 2.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号