C++ STL详解:vector运用与迭代器解析

需积分: 0 1 下载量 69 浏览量 更新于2024-08-05 收藏 79KB PDF 举报
"C++ STL的学习,特别是关于vector的使用及其相关操作" 在C++编程中,Standard Template Library(STL)是一组强大的工具,能够显著提高代码的效率和可读性。STL主要包括五大组件:容器、算法、迭代器、函数对象和分配器。在这篇内容中,我们将重点讨论STL中的容器之一——`vector`。 `vector`是C++ STL中的一种动态数组,它支持随机访问,但插入和删除操作在非尾部位置通常不是常数时间复杂度。为了保证高效性,通常建议在`vector`的末尾进行元素的增加或删除。 1. **声明**: - `vector<int>a;` 创建一个动态大小的整数数组。 - `vector<int>b[233];` 创建一个长度为233的一维数组,其中每个元素都是一个动态大小的整数数组。 - `struct rec{...}; vector<rec>c;` 可以存储自定义结构体类型的元素。 2. **成员函数**: - `size()` 返回`vector`的元素数量,时间复杂度为O(1)。 - `empty()` 如果`vector`为空,返回`true`,否则返回`false`,同样为O(1)的时间复杂度。 - `clear()` 清空`vector`,将所有元素移除。 3. **迭代器**: - 迭代器是STL中用于访问容器元素的重要工具,类似于指针。 - `vector<int>::iterator it;` 定义一个指向整数`vector`的迭代器。 - 迭代器支持加减操作,可以用来移动到下一个或前一个元素,也可以直接加上一个整数,跳过多个元素。 4. **begin()` 和 `end()`: - `begin()` 返回指向`vector`第一个元素的迭代器。 - `end()` 返回指向`vector`最后一个元素之后的迭代器,表示容器的结束位置。尝试访问`*a.end()`会导致越界错误。 5. **front()` 和 `back()`: - `front()` 返回`vector`的第一个元素,等同于`*a.begin()`或`a[0]`。 - `back()` 返回`vector`的最后一个元素,用于访问末尾的元素。 遍历`vector`的两种常见方法: ```cpp // 方法一:基于索引 for (int i = 0; i < a.size(); i++) cout << a[i] << endl; // 方法二:基于迭代器 for (vector<int>::iterator it = a.begin(); it != a.end(); it++) cout << *it << endl; ``` 两者都能有效遍历并打印`vector<int>`的所有元素。 `vector`是C++ STL中的一个重要容器,它提供了丰富的操作接口和高效的性能。熟练掌握`vector`的使用对于编写高效且易于理解的C++代码至关重要。通过了解其声明方式、成员函数、迭代器以及遍历方法,开发者可以更好地利用`vector`解决实际问题。