vector 容器(C++)

vector 是 C++ 标准库中的一种序列容器,它提供了动态大小的数组功能。与传统的数组不同,vector 可以在运行时自动调整大小。vector 元素在内存中是连续存储的,因此它支持高效的随机访问。常用于存储需要频繁插入、删除元素的动态数据。

主要特点:

  • 动态大小vector 会根据需要自动扩展容量。
  • 随机访问:支持按索引直接访问元素,时间复杂度为 O(1)。
  • 连续存储vector 的元素在内存中是连续存储的,这使得它们的访问比链表等数据结构更高效。
  • 内存管理vector 会自动管理内存,但可以通过 reserve() 函数提前申请内存,避免多次扩容。
基本操作
  1. 创建和初始化 vector

    • 创建空 vector
    • 使用初始化列表、指定大小和元素初始化等方式创建 vector
  2. 访问和修改元素

    • 通过下标 ([]) 或 at() 方法访问元素。
    • 通过 [] 操作符直接修改元素。
    • at() 方法可以检查越界访问,并抛出异常。
  3. 添加和删除元素

    • push_back(x):向 vector 末尾添加元素。
    • pop_back():删除 vector 中的最后一个元素。
  4. 获取 vector 的大小和容量

    • size():返回 vector 中元素的个数。
    • capacity():返回 vector 分配的内存容量。
  5. 遍历 vector

    • 使用传统的 for 循环、范围 for 循环或迭代器遍历 vector
  6. 修改 vector 容量

    • reserve(n):为 vector 预留 n 个元素的空间,避免频繁扩容。
    • resize(n):调整 vector 的大小,若 n 小于当前大小,元素会被删除。

示例

#include <iostream>
#include <vector>
using namespace std;

int main() {
    // 创建 vector
    vector<int> v1;  // 空的 vector
    vector<int> v2(5, 10);  // 5个元素,每个元素初始化为 10
    vector<int> v3 = {1, 2, 3, 4, 5};  // 使用初始化列表
    
    // 访问元素
    cout << "v3[0]: " << v3[0] << endl;
    cout << "v3.at(2): " << v3.at(2) << endl;
    
    // 添加元素
    v3.push_back(6);  // 添加元素到末尾
    cout << "v3 after push_back: ";
    for (auto x : v3) cout << x << " ";
    cout << endl;
    
    // 删除元素
    v3.pop_back();  // 删除最后一个元素
    cout << "v3 after pop_back: ";
    for (auto x : v3) cout << x << " ";
    cout << endl;
    
    // 获取大小和容量
    cout << "v3.size(): " << v3.size() << endl;  // 元素个数
    cout << "v3.capacity(): " << v3.capacity() << endl;  // 内存容量
    
    // 遍历 vector
    cout << "Using range-based for loop: ";
    for (auto val : v3) {
        cout << val << " ";
    }
    cout << endl;

    // 使用迭代器遍历
    cout << "Using iterator: ";
    for (auto it = v3.begin(); it != v3.end(); ++it) {
        cout << *it << " ";
    }
    cout << endl;

    // 修改 vector 容量
    v3.reserve(20);  // 预留 20 个元素的空间
    cout << "v3.capacity() after reserve(20): " << v3.capacity() << endl;
    
    return 0;
}
输出
v3[0]: 1
v3.at(2): 3
v3 after push_back: 1 2 3 4 5 6
v3 after pop_back: 1 2 3 4 5
v3.size(): 5
v3.capacity(): 7
Using range-based for loop: 1 2 3 4 5
Using iterator: 1 2 3 4 5
v3.capacity() after reserve(20): 20
总结
  • 创建和初始化:可以通过空构造函数、指定大小、初始化列表等方式创建 vector
  • 元素操作
    • 使用 push_back() 添加元素;
    • 使用 pop_back() 删除元素;
    • 使用 []at() 访问或修改元素。
  • 容器管理
    • 使用 size()capacity() 获取当前元素数量和内存容量;
    • 使用 reserve()resize() 控制内存管理,避免不必要的扩容。
  • 遍历
    • 使用传统 for 循环、范围 for 循环或迭代器遍历 vector

vector 是 C++ 中非常常用且强大的容器,它提供了灵活的数据存储方式和高效的随机访问功能。掌握 vector 的使用是 C++ 编程的基础,对于处理动态数据集特别有帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值