C++ STL:向量操作与迭代器详解

需积分: 9 0 下载量 6 浏览量 更新于2024-08-04 收藏 8KB MD 举报
C++ Standard Template Library (STL) 是C++编程中不可或缺的一部分,它提供了一系列高效、灵活的数据结构和算法,使得代码更加模块化和易于管理。本文将主要介绍C++ STL中的核心数据结构vector,以及其基本操作。 1. **vector** - `vector` 是C++ STL中最常用的一种动态数组,它支持随机访问,这意味着可以快速地通过索引访问或修改元素。然而,由于其内部实现的性质,向中间位置插入元素的时间复杂度通常为O(n),而非O(1),因此建议在需要频繁插入和删除元素时,避免在非末尾位置进行这些操作。vector的主要特性包括: - **声明**:`vector<int> a;` 或 `vector<int> b[233];`,`vector`可以存储整型数据或自定义结构体,如`vector<rec> c;`。 - **size和empty**:这两个函数用于获取vector的大小和判断其是否为空,它们的时间复杂度都是O(1)。例如,`size()`返回元素个数,`empty()`检查vector是否为空。 - **clear**:`clear()`函数用于清空vector的所有元素,这在需要释放内存或者重新初始化vector时非常有用。 - **迭代器**:迭代器是STL容器的重要概念,用于遍历容器中的元素。`vector<int>::iterator it;` 是声明一个指向`int`元素的迭代器。`begin()`和`end()`函数分别返回指向第一个和最后一个元素(但不包括)的迭代器。 - **遍历**:通过`for`循环和迭代器,可以轻松遍历vector的每个元素,如`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; }`。 - **front和back**:`front()`返回vector的第一个元素,而`back()`则返回最后一个元素。这些操作等价于数组的下标访问,例如`a.front()`和`a[0]`,`a.back()`和`a[a.size() - 1]`。 - **push_back和pop_back**:`push_back()`用于在vector的末尾添加一个元素,`pop_back()`则移除末尾的元素。这些都是对vector动态扩容和收缩操作的常见使用。 在实际开发中,vector因其灵活性和性能优势常被用作动态数组的替代品,尤其适合需要频繁读写和调整大小的情况。理解并熟练运用C++ STL中的vector,有助于提升代码的可读性、可维护性和效率。