## C++ 容器 Vector ### 简介`std::vector` 是 C++ 标准库 (STL) 中的一个序列容器,它封装了动态大小数组的功能。 这意味着 `vector` 可以在运行时根据需要自动调整其大小,而无需程序员手动管理内存分配。### 特性
动态大小:
`vector` 可以根据需要自动增长或缩小,无需程序员手动管理内存。
连续存储:
`vector` 中的元素存储在连续的内存位置,这使得通过索引访问元素非常快速 (O(1) 时间复杂度)。
随机访问:
可以使用索引 (类似于数组) 直接访问 `vector` 中的任何元素。
类型安全:
`vector` 是类型安全的,这意味着它只允许存储指定类型的元素。
迭代器支持:
`vector` 支持迭代器,可以方便地遍历其元素。### 使用方法#### 1. 头文件首先需要包含 `
添加元素:
`push_back(value)`: 在 vector 末尾添加一个元素。
`emplace_back(args...)`: 在 vector 末尾构造一个元素,避免了不必要的拷贝或移动操作.
`insert(iterator, value)`: 在指定位置插入一个元素。
访问元素:
`operator[] (index)`: 通过索引访问元素 (快速,但不安全)。
`at(index)`: 通过索引访问元素 (安全,如果索引越界会抛出异常)。
`front()`: 返回第一个元素的引用.
`back()`: 返回最后一个元素的引用.
删除元素:
`pop_back()`: 删除最后一个元素。
`erase(iterator)`: 删除指定位置的元素。
`clear()`: 删除所有元素。
其他操作:
`size()`: 返回 vector 中元素的数量。
`empty()`: 检查 vector 是否为空。
`resize(new_size)`: 调整 vector 的大小。
`capacity()`: 返回 vector 当前分配的内存空间大小。
`reserve(new_capacity)`: 预留内存空间,避免频繁重新分配.### 示例```cpp
#include
C++ 容器 Vector
简介`std::vector` 是 C++ 标准库 (STL) 中的一个序列容器,它封装了动态大小数组的功能。 这意味着 `vector` 可以在运行时根据需要自动调整其大小,而无需程序员手动管理内存分配。
特性* **动态大小:** `vector` 可以根据需要自动增长或缩小,无需程序员手动管理内存。 * **连续存储:** `vector` 中的元素存储在连续的内存位置,这使得通过索引访问元素非常快速 (O(1) 时间复杂度)。 * **随机访问:** 可以使用索引 (类似于数组) 直接访问 `vector` 中的任何元素。 * **类型安全:** `vector` 是类型安全的,这意味着它只允许存储指定类型的元素。 * **迭代器支持:** `vector` 支持迭代器,可以方便地遍历其元素。
使用方法
1. 头文件首先需要包含 `
include
2. 创建 vector 对象可以使用以下语法创建 `vector` 对象:```cpp
std::vector
3. 常用操作* **添加元素:*** `push_back(value)`: 在 vector 末尾添加一个元素。* `emplace_back(args...)`: 在 vector 末尾构造一个元素,避免了不必要的拷贝或移动操作.* `insert(iterator, value)`: 在指定位置插入一个元素。 * **访问元素:*** `operator[] (index)`: 通过索引访问元素 (快速,但不安全)。* `at(index)`: 通过索引访问元素 (安全,如果索引越界会抛出异常)。* `front()`: 返回第一个元素的引用.* `back()`: 返回最后一个元素的引用. * **删除元素:*** `pop_back()`: 删除最后一个元素。* `erase(iterator)`: 删除指定位置的元素。* `clear()`: 删除所有元素。 * **其他操作:*** `size()`: 返回 vector 中元素的数量。* `empty()`: 检查 vector 是否为空。* `resize(new_size)`: 调整 vector 的大小。* `capacity()`: 返回 vector 当前分配的内存空间大小。* `reserve(new_capacity)`: 预留内存空间,避免频繁重新分配.
示例```cpp
include
include
总结`std::vector` 是一个功能强大且易于使用的容器,适用于需要动态调整大小的数组。 由于其连续存储的特性,它提供了快速的元素访问和迭代性能。