C++编程:迭代器遍历与随机访问vector

需积分: 0 0 下载量 67 浏览量 更新于2024-08-19 收藏 571KB PPT 举报
本篇资源主要介绍了C++语言中的基本数据结构vector及其在程序设计中的应用,特别是针对遍历和查找操作。vector是C++标准库中的动态数组容器,它支持随机访问,使得在编程中能够高效地处理数据。 首先,我们来了解vector的基本概念: 1. **什么是vector**:vector是一种动态数组,它提供了类似数组的随机访问功能,同时允许在内存空间允许的情况下自动扩展或缩小大小。由于其内部实现,插入和删除元素在尾部的速度非常快,但在中间插入则相对较慢。 **创建与操作**: - **创建**:可以使用`vector<T>`来声明一个类型为T的vector容器,如`vector<int> v;`。创建时可以选择初始化,如`vector<int> v(5);`创建一个初始容量为5的整数vector。 - **插入**:vector提供了两个常用的插入方法: - `insert()`函数可以在指定位置插入元素,如`v.insert(v.begin(), value);` - `push_back()`用于在vector末尾追加元素,如`v.push_back(value);` - **删除**:vector支持在指定位置删除元素,例如`v.erase(position);`。此外,也可以使用迭代器配合`remove()`和`erase()`进行批量删除。 **遍历与查找**: - **迭代器遍历**:通过`vector<int>::iterator`类型的变量,我们可以使用`begin()`和`end()`方法获取vector的起始和结束迭代器,然后通过`++`操作符逐个访问元素,如`for(vector<int>::iterator it = v.begin(); it != v.end(); ++it) { ... }` - **随机访问**:由于vector是随机访问容器,可以直接通过索引访问元素,如`cout << v[3];` - **查找**:C++中的`find()`函数用于在vector中查找指定值,如`vector<int>::iterator result = find(v.begin(), v.end(), 3);`,如果找到则返回该元素的迭代器,否则返回`end()`。 **排序**: - **sort()函数**:C++的`sort()`函数用于对容器进行排序,使用它时需要包含头文件`#include<algorithm>`。默认情况下,`sort()`对向量进行升序排序,如果需要自定义排序规则,可以提供一个比较函数,如本例中的`MyComp()`函数,它用于根据字符串中'1'的个数进行排序。 **示例代码**: ```cpp bool MyComp(const string& s1, const string& s2) { int c1 = count(s1.begin(), s1.end(), '1'); int c2 = count(s2.begin(), s2.end(), '1'); return c1 != c2 ? c1 < c2 : s1 < s2; } int main() { vector<string> vstr; string str; while (cin >> str) { vstr.push_back(str); } sort(vstr.begin(), vstr.end(), MyComp); // 排序后的输出... } ``` 总结来说,这篇教程深入讲解了如何在C++中使用vector进行创建、插入、删除操作,并演示了迭代器遍历、随机访问以及自定义排序功能。这对于理解和实践C++编程尤其有益,尤其是在处理动态数据结构时。