c++容器vector(c++容器vector指针)

## C++ 容器 Vector ### 简介`std::vector` 是 C++ 标准库 (STL) 中的一个序列容器,它封装了动态大小数组的功能。 这意味着 `vector` 可以在运行时根据需要自动调整其大小,而无需程序员手动管理内存分配。### 特性

动态大小:

`vector` 可以根据需要自动增长或缩小,无需程序员手动管理内存。

连续存储:

`vector` 中的元素存储在连续的内存位置,这使得通过索引访问元素非常快速 (O(1) 时间复杂度)。

随机访问:

可以使用索引 (类似于数组) 直接访问 `vector` 中的任何元素。

类型安全:

`vector` 是类型安全的,这意味着它只允许存储指定类型的元素。

迭代器支持:

`vector` 支持迭代器,可以方便地遍历其元素。### 使用方法#### 1. 头文件首先需要包含 `` 头文件:```cpp #include ```#### 2. 创建 vector 对象可以使用以下语法创建 `vector` 对象:```cpp std::vector vec; // 创建一个空的 vector,用于存储 T 类型元素 std::vector vec2(5); // 创建一个包含 5 个 int 元素的 vector,默认初始化为 0 std::vector vec3(3, 1.5); // 创建一个包含 3 个 double 元素的 vector,初始化为 1.5 std::vector vec4 = {1, 2, 3, 4, 5}; // 使用初始化列表创建 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 int main() {// 创建一个空的 vectorstd::vector numbers;// 添加元素numbers.push_back(10);numbers.push_back(20);numbers.push_back(30);// 访问元素std::cout << "第一个元素: " << numbers[0] << std::endl;std::cout << "第二个元素: " << numbers.at(1) << std::endl;std::cout << "最后一个元素: " << numbers.back() << std::endl;// 遍历 vectorstd::cout << "所有元素: ";for (int number : numbers) {std::cout << number << " ";}std::cout << std::endl;// 删除元素numbers.pop_back();std::cout << "删除最后一个元素后: ";for (int number : numbers) {std::cout << number << " ";}std::cout << std::endl;return 0; } ```### 总结`std::vector` 是一个功能强大且易于使用的容器,适用于需要动态调整大小的数组。 由于其连续存储的特性,它提供了快速的元素访问和迭代性能。

C++ 容器 Vector

简介`std::vector` 是 C++ 标准库 (STL) 中的一个序列容器,它封装了动态大小数组的功能。 这意味着 `vector` 可以在运行时根据需要自动调整其大小,而无需程序员手动管理内存分配。

特性* **动态大小:** `vector` 可以根据需要自动增长或缩小,无需程序员手动管理内存。 * **连续存储:** `vector` 中的元素存储在连续的内存位置,这使得通过索引访问元素非常快速 (O(1) 时间复杂度)。 * **随机访问:** 可以使用索引 (类似于数组) 直接访问 `vector` 中的任何元素。 * **类型安全:** `vector` 是类型安全的,这意味着它只允许存储指定类型的元素。 * **迭代器支持:** `vector` 支持迭代器,可以方便地遍历其元素。

使用方法

1. 头文件首先需要包含 `` 头文件:```cpp

include ```

2. 创建 vector 对象可以使用以下语法创建 `vector` 对象:```cpp std::vector vec; // 创建一个空的 vector,用于存储 T 类型元素 std::vector vec2(5); // 创建一个包含 5 个 int 元素的 vector,默认初始化为 0 std::vector vec3(3, 1.5); // 创建一个包含 3 个 double 元素的 vector,初始化为 1.5 std::vector vec4 = {1, 2, 3, 4, 5}; // 使用初始化列表创建 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 int main() {// 创建一个空的 vectorstd::vector numbers;// 添加元素numbers.push_back(10);numbers.push_back(20);numbers.push_back(30);// 访问元素std::cout << "第一个元素: " << numbers[0] << std::endl;std::cout << "第二个元素: " << numbers.at(1) << std::endl;std::cout << "最后一个元素: " << numbers.back() << std::endl;// 遍历 vectorstd::cout << "所有元素: ";for (int number : numbers) {std::cout << number << " ";}std::cout << std::endl;// 删除元素numbers.pop_back();std::cout << "删除最后一个元素后: ";for (int number : numbers) {std::cout << number << " ";}std::cout << std::endl;return 0; } ```

总结`std::vector` 是一个功能强大且易于使用的容器,适用于需要动态调整大小的数组。 由于其连续存储的特性,它提供了快速的元素访问和迭代性能。

Powered By Z-BlogPHP 1.7.2

备案号:蜀ICP备2023005218号