vector::C++

发布于:2024-07-02 ⋅ 阅读:(11) ⋅ 点赞:(0)

在 C++ 标准库中,std::vector 是一个动态数组容器,提供了类似于数组的功能,但具有自动调整大小的能力。它是 C++ 标准模板库(STL)的一部分,广泛用于存储和管理一组动态大小的元素。

std::vector 的特点

  1. 动态大小:可以自动调整大小,当插入或删除元素时,std::vector 会自动调整自身的容量。
  2. 连续内存存储std::vector 在内存中是连续存储的,支持高效的随机访问。
  3. 丰富的成员函数:提供了多种成员函数用于元素的插入、删除、访问和遍历。
  4. 高效插入和删除:支持在末尾高效地插入和删除元素。

基本用法

包含头文件
#include <vector>
#include <iostream>
声明和初始化
std::vector<int> vec;                // 默认构造函数,创建一个空的 vector
std::vector<int> vec(10);            // 创建一个包含 10 个元素的 vector,元素值为默认值
std::vector<int> vec(10, 5);         // 创建一个包含 10 个元素的 vector,元素值为 5
std::vector<int> vec = {1, 2, 3, 4}; // 使用初始化列表创建 vector
访问元素
vec[0] = 10;            // 使用下标访问元素
int value = vec.at(1);  // 使用 at() 方法访问元素,带边界检查
int first = vec.front(); // 访问第一个元素
int last = vec.back();   // 访问最后一个元素
插入和删除元素
vec.push_back(6);       // 在末尾插入元素
vec.pop_back();         // 删除末尾元素
vec.insert(vec.begin() + 1, 8); // 在指定位置插入元素
vec.erase(vec.begin() + 2); // 删除指定位置的元素
vec.clear();            // 清空所有元素
迭代元素
// 使用范围 for 循环
for (int value : vec) {
    std::cout << value << " ";
}
std::cout << std::endl;

// 使用迭代器
for (std::vector<int>::iterator it = vec.begin(); it != vec.end(); ++it) {
    std::cout << *it << " ";
}
std::cout << std::endl;

示例代码

以下是一个综合示例,展示了 std::vector 的常见操作:

#include <vector>
#include <iostream>

int main() {
    // 创建并初始化 vector
    std::vector<int> vec = {1, 2, 3, 4, 5};

    // 访问和修改元素
    vec[0] = 10;
    vec.at(1) = 20;

    // 插入元素
    vec.push_back(6);
    vec.insert(vec.begin() + 2, 15);

    // 删除元素
    vec.pop_back();
    vec.erase(vec.begin() + 1);

    // 遍历并输出 vector 元素
    std::cout << "Vector elements: ";
    for (int value : vec) {
        std::cout << value << " ";
    }
    std::cout << std::endl;

    // 输出 vector 的大小和容量
    std::cout << "Size: " << vec.size() << std::endl;
    std::cout << "Capacity: " << vec.capacity() << std::endl;

    return 0;
}

常用成员函数

  • size():返回当前元素个数。
  • capacity():返回当前分配的存储容量。
  • empty():检查容器是否为空。
  • resize(size_t n):调整容器大小。
  • reserve(size_t n):预留存储空间,以减少后续的重新分配。
  • shrink_to_fit():减少容量以适应当前大小。
  • assign():用新元素替换当前元素。
  • data():返回指向容器中第一个元素的指针。

总结

std::vector 是一个非常灵活和高效的容器,适用于需要动态数组功能的场景。它提供了丰富的操作函数,可以方便地进行元素的插入、删除和访问。熟悉并掌握 std::vector 的用法是 C++ 编程的重要技能之一。