STL容器vector操作详解

需积分: 10 2 下载量 132 浏览量 更新于2024-07-19 收藏 28KB DOCX 举报
“STL工具基础操作汇总” STL(Standard Template Library,标准模板库)是C++编程语言中的一部分,提供了高效且灵活的数据结构和算法。在这个文档中,重点介绍了STL中的一个关键组件——vector容器,以及如何进行基本操作如创建、添加、删除、查找元素,以及使用迭代器进行遍历和对元素的操作。 首先,`vector`是一个动态数组,可以在运行时调整其大小。创建`vector`时,可以不指定大小,如`vector<int>v;`,但此时无法直接通过下标访问元素。若指定大小,如`vector<int>v(10);`,则会创建一个包含10个初始值为0的元素的`vector`。还可以指定大小和初值,如`vector<int>v(10,5);`,这样创建的`vector`将包含10个值为5的元素。 向`vector`中添加元素,可以使用`push_back()`方法,例如`v.push_back(2)`和`v.push_back(7)`,这会在`vector`末尾添加元素。访问`vector`元素,可以直接通过下标,如`v[0] = 2`,或通过迭代器进行遍历。迭代器是一种特殊的指针,可以指向`vector`中的元素,如`vector<int>::iterator it; for (it = v.begin(); it != v.end(); it++)`。 插入元素使用`insert()`函数,可以指定插入位置和值,例如`v.insert(v.begin(), 8)`在开头插入,`v.insert(v.begin()+2, 8)`在第二个元素前插入,而`v.insert(v.end(), 8)`在末尾追加。删除元素用`erase()`,如`v.erase(v.begin()+2)`删除第二个元素,`v.erase(v.begin()+1, v.begin()+5)`删除一段连续的元素,而`v.clear()`清空整个`vector`。 `reverse`算法可以用于反转`vector`元素的顺序,如`reverse(v.begin(), v.end())`。`sort`算法可以对`vector`进行排序,默认升序,自定义排序规则可通过提供比较函数,如`sort(v.begin(), v.end())`。 查询`vector`的大小,用`v.size()`;判断是否为空,用`v.empty()`;重新设置`vector`大小,用`v.resize(n)`;获取或操作第一个元素,用`v.front()`。 此外,`vector`支持下标运算,例如`v.front()+n`可以获取第n个元素(从0开始计算)。但请注意,直接使用`cout << v.front()+n`可能会导致未定义行为,因为`v.front()+n`的结果可能不在`vector`的有效范围内。正确做法是先存储`v.front()`,然后加上n,再进行输出。 这个文档全面覆盖了`vector`的基础操作,对于理解和使用STL中的`vector`容器非常有帮助,同时也为其他STL容器的学习奠定了基础。通过熟练掌握这些操作,开发者能够更有效地处理动态数据集合,提高代码的效率和可读性。