C++ STL:深入理解vector和deque

需积分: 10 4 下载量 199 浏览量 更新于2024-09-16 收藏 88KB PPTX 举报
"这篇资源是关于C++编程中两种重要的STL容器——vector和deque的介绍,涵盖了它们的基本概念、用途、声明方式以及常用成员函数的使用方法。" 在C++编程中,`vector`和`deque`(双端队列)是标准模板库(STL)中的两种动态容器,用于存储和管理元素集合。`vector`可以看作是一个动态数组,它允许在运行时根据需要自动增长或缩小容量,提供了比传统数组更安全、更高效的操作方式。 **vector概述** `vector`是一个动态数组,可以容纳任何类型的对象。它支持通过位置索引访问元素(常量时间复杂度),按顺序遍历元素(线性时间复杂度),并在末尾添加和移除元素(常量摊销时间复杂度)。这使得`vector`成为处理序列数据的常见选择,尤其适合需要快速访问和在末尾操作元素的场景。 **vector的声明与包含** 要使用`vector`,我们需要包含`<vector>`头文件。例如: ```cpp #include<vector> ``` `vector`的声明可以指定元素类型和初始大小。以下是一些示例: ```cpp vector<int> vec2(10); // 创建一个包含10个整数元素的vector,初始值为0 vector<char> vec1(2, 'a'); // 创建一个包含2个字符元素的vector,初始化为'a' vector<int> vec3(vec2); // 复制vec2到vec3 ``` **vector成员函数** `vector`提供了一系列的成员函数来操作和访问其元素: - `at(index)`: 安全访问元素,如果索引越界会抛出异常。 - `front()`: 返回第一个元素。 - `back()`: 返回最后一个元素。 - `push_back(value)`: 在末尾添加一个元素。 - `pop_back()`: 移除末尾元素。 - `insert(it, value)`: 在指定迭代器位置插入一个元素。 - `erase(it)`: 删除指定迭代器指向的元素。 - `resize(size, value)`: 调整vector大小,可选地用`value`初始化新插入的元素。 此外,`vector`还支持迭代器操作,如`begin()`和`end()`返回指向容器首尾的迭代器,可以用于遍历元素。 **deque概述** `deque`(双端队列)类似于`vector`,但提供了在两端进行高效插入和删除的能力。`deque`不是连续存储的,而是由多个块组成,因此在两端操作的时间复杂度通常优于`vector`。 **deque的声明与使用** 声明`deque`的方式与`vector`类似,只是容器名称不同: ```cpp deque<int> deq; deque<char> deq1(5, 'b'); // 创建一个包含5个字符元素的deque,初始化为'b' ``` `deque`也有类似的成员函数,如`push_front()`用于在前端插入元素,`pop_front()`用于移除前端元素。 `vector`和`deque`是C++编程中不可或缺的工具,它们为处理动态序列数据提供了高效且灵活的解决方案。选择使用哪个容器取决于具体的应用需求,例如是否需要频繁在两端操作,以及对空间和时间效率的要求。