std::vector – 动态数组容器

std::vector 是 C++ 标准库提供的动态数组容器,它是一个能够存储任意类型的数据,并且能够自动扩展和缩小容量的容器。

一、使用方法

使用 std::vector 首先需要包含头文件 <vector>

#include <vector>

定义一个 std::vector 对象:

std::vector<int> vec; // 定义一个 int 类型的 vector 对象

std::vector 中添加元素:

vec.push_back(1); // 向 vector 中添加一个元素 1
vec.push_back(2); // 向 vector 中添加一个元素 2
vec.push_back(3); // 向 vector 中添加一个元素 3

遍历 std::vector 中的元素:

for (auto it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " "; // 输出 vector 中的元素
}
// 输出:1 2 3

二、容量操作

通过 std::vector 提供的容量操作,我们可以查询和修改 vector 的容量信息。

查询 vector 的容量信息:

std::cout << vec.size() << std::endl; // 输出 vector 的元素个数
std::cout << vec.capacity() << std::endl; // 输出 vector 的容量
std::cout << vec.empty() << std::endl; // 判断 vector 是否为空

修改 vector 容量:

vec.resize(5); // 将 vector 的容量改为 5,未使用的元素初始化为默认值
vec.reserve(10); // 将 vector 的容量预留为 10,但 vector 的元素个数不变
vec.shrink_to_fit(); // 将 vector 的容量缩小到当前元素个数,节省不必要的空间

三、元素操作

通过 std::vector 提供的元素操作,我们可以对 vector 中的元素进行访问、修改、添加和删除等操作。

1. 访问元素

使用 std::vector 提供的下标操作或迭代器操作访问 vector 中的元素。

vec[0]; // 访问 vector 中 index 为 0 的元素
vec.at(0); // 访问 vector 中 index 为 0 的元素,越界时会抛出异常
vec.front(); // 返回 vector 的第一个元素
vec.back(); // 返回 vector 的最后一个元素

2. 修改元素

使用 std::vector 提供的下标操作或迭代器操作修改 vector 中的元素。

vec[0] = 4; // 修改 vector 中 index 为 0 的元素为 4
*vec.begin() = 5; // 修改 vector 中第一个元素为 5

3. 添加元素

使用 std::vector 提供的 push_back() 操作向 vector 中添加元素。

vec.push_back(4); // 向 vector 中添加一个元素 4

4. 删除元素

使用 std::vector 提供的 erase() 操作删除 vector 中的元素。

vec.erase(vec.begin() + 1); // 删除 vector 中下标为 1 的元素
vec.pop_back(); // 删除 vector 中的最后一个元素

四、注意事项

1. 对于大规模的数据处理,使用 std::vector 可能会占用过多的内存。

2. 在循环中遍历 vector 元素时,应该使用迭代器进行操作,避免下标访问越界。

for (auto it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " "; // 输出 vector 中的元素
}

3. 对 vector 进行扩容、缩容等操作时,可能会影响 vector 中元素在内存中的存储位置。

五、总结

std::vector 提供了一个灵活的动态数组容器,能够存储任意类型的数据,并且能够自动扩展和缩小容量。同时,通过 std::vector 提供的容量操作和元素操作,我们可以方便地查询和修改 vector 的容量信息,以及对 vector 中的元素进行访问、修改、添加和删除等操作。使用 std::vector 需要注意的是内存占用和迭代器操作。

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/302707.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝的头像小蓝
上一篇 2024-12-30 18:13
下一篇 2024-12-31 11:48

相关推荐

  • QML 动态加载实践

    探讨 QML 框架下动态加载实现的方法和技巧。 一、实现动态加载的方法 QML 支持从 JavaScript 中动态指定需要加载的 QML 组件,并放置到运行时指定的位置。这种技术…

    编程 2025-04-29
  • Python导入数组

    本文将为您详细阐述Python导入数组的方法、优势、适用场景等方面,并附上代码示例。 一、numpy库的使用 numpy是Python中一个强大的数学库,其中提供了非常丰富的数学函…

    编程 2025-04-29
  • Python返回数组:一次性搞定多种数据类型

    Python是一种多用途的高级编程语言,具有高效性和易读性的特点,因此被广泛应用于数据科学、机器学习、Web开发、游戏开发等各个领域。其中,Python返回数组也是一项非常强大的功…

    编程 2025-04-29
  • Python去掉数组的中括号

    在Python中,被中括号包裹的数据结构是列表,列表是Python中非常常见的数据类型之一。但是,有些时候我们需要将列表展开成一维的数组,并且去掉中括号。本文将为大家详细介绍如何用…

    编程 2025-04-29
  • Python操作数组

    本文将从多个方面详细介绍如何使用Python操作5个数组成的列表。 一、数组的定义 数组是一种用于存储相同类型数据的数据结构。Python中的数组是通过列表来实现的,列表中可以存放…

    编程 2025-04-29
  • Python爱心代码动态

    本文将从多个方面详细阐述Python爱心代码动态,包括实现基本原理、应用场景、代码示例等。 一、实现基本原理 Python爱心代码动态使用turtle模块实现。在绘制一个心形的基础…

    编程 2025-04-29
  • 解决docker-compose 容器时间和服务器时间不同步问题

    docker-compose是一种工具,能够让您使用YAML文件来定义和运行多个容器。然而,有时候容器的时间与服务器时间不同步,导致一些不必要的错误和麻烦。以下是解决方法的详细介绍…

    编程 2025-04-29
  • Python二维数组对齐输出

    本文将从多个方面详细阐述Python二维数组对齐输出的方法与技巧。 一、格式化输出 Python中提供了格式化输出的方法,可以对输出的字符串进行格式化处理。 names = [‘A…

    编程 2025-04-29
  • Java创建一个有10万个元素的数组

    本文将从以下方面对Java创建一个有10万个元素的数组进行详细阐述: 一、基本介绍 Java是一种面向对象的编程语言,其强大的数组功能可以支持创建大规模的多维数组以及各种复杂的数据…

    编程 2025-04-28
  • Python数组随机分组用法介绍

    Python数组随机分组是一个在数据分析与处理中常用的技术,它可以将一个大的数据集分成若干组,以便于进行处理和分析。本文将从多个方面对Python数组随机分组进行详细的阐述,包括使…

    编程 2025-04-28

发表回复

登录后才能评论