Cpp::STL—vector类的使用与理解(上)

在C++标准模板库(STL)中,vector 是一个非常常用的序列容器。它提供了动态数组的功能,可以自动管理内存,支持高效的随机访问。本文将详细介绍 vector 类的使用与理解,分为上下两篇。本文为上篇,将覆盖 vector 的基本特性及常用操作。

一、vector 的基本特性

  1. 动态大小vector 可以根据需要自动扩展或收缩大小。
  2. 随机访问:支持通过下标快速访问元素,时间复杂度为 O(1)。
  3. 内存管理vector 自动处理内存的分配与释放,避免了手动管理的复杂性。

二、引入头文件

使用 vector 之前,需要包含头文件:

#include <vector>

三、基本操作

1. 创建 vector

可以通过以下几种方式创建 vector

std::vector<int> v1;                     // 空的 vector
std::vector<int> v2(5);                  // 包含 5 个默认初始化的元素
std::vector<int> v3(5, 10);               // 包含 5 个值为 10 的元素
std::vector<int> v4 = {1, 2, 3, 4, 5};   // 使用初始化列表

2. 添加元素

vector 提供了多种方法添加元素:

v1.push_back(10);  // 在末尾添加元素
v1.push_back(20);
v1.emplace_back(30); // 直接构造对象,性能更优

3. 访问元素

可以通过下标或迭代器访问元素:

int first = v1[0];           // 使用下标访问
int second = v1.at(1);       // 使用 at() 方法访问,提供边界检查
for (auto it = v1.begin(); it != v1.end(); ++it) {
    std::cout << *it << " "; // 使用迭代器遍历
}

4. 修改元素

可以通过下标或迭代器修改元素:

v1[0] = 100;           // 使用下标修改
v1.at(1) = 200;       // 使用 at() 方法修改
for (auto it = v1.begin(); it != v1.end(); ++it) {
    *it += 10;        // 使用迭代器修改
}

5. 删除元素

可以使用 pop_back() 删除最后一个元素,或使用 erase() 删除指定位置的元素:

v1.pop_back();        // 删除最后一个元素
v1.erase(v1.begin()); // 删除第一个元素

6. 大小和容量

vector 提供了方法来获取当前大小和容量:

std::cout << "Size: " << v1.size() << std::endl;   // 当前元素个数
std::cout << "Capacity: " << v1.capacity() << std::endl; // 当前容量

7. 清空和释放内存

可以使用 clear() 清空 vector 中的元素:

v1.clear();           // 清空所有元素

四、示例代码

以下是一个简单的示例,展示了 vector 的基本使用:

#include <iostream>
#include <vector>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};

    // 添加元素
    numbers.push_back(6);
    numbers.emplace_back(7);

    // 访问元素
    std::cout << "Numbers: ";
    for (auto num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    // 修改元素
    numbers[2] = 10;

    // 删除元素
    numbers.pop_back();

    // 输出结果
    std::cout << "Updated Numbers: ";
    for (auto num : numbers) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

五、总结

vector 是C++ STL中功能强大且灵活的容器,支持动态数组的特性,使得开发者可以方便地处理一组数据。在本篇中,我们探讨了 vector 的基本特性、常用操作以及示例代码。在下篇中,我们将深入讨论 vector 的高级特性及应用场景。

希望本文能帮助你更好地理解 vector 类的使用与理解!如有疑问,欢迎讨论!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只蜗牛儿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值