C++编程:迭代器遍历与随机访问vector
需积分: 0 119 浏览量
更新于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++编程尤其有益,尤其是在处理动态数据结构时。
2009-02-09 上传
2024-04-17 上传
2008-09-08 上传
2019-07-10 上传
2021-08-10 上传
2021-08-10 上传
2010-05-01 上传
2022-10-06 上传
2020-02-28 上传
花香九月
- 粉丝: 27
- 资源: 2万+
最新资源
- NIST REFPROP问题反馈与解决方案存储库
- 掌握LeetCode习题的系统开源答案
- ctop:实现汉字按首字母拼音分类排序的PHP工具
- 微信小程序课程学习——投资融资类产品说明
- Matlab犯罪模拟器开发:探索《当蛮力失败》犯罪惩罚模型
- Java网上招聘系统实战项目源码及部署教程
- OneSky APIPHP5库:PHP5.1及以上版本的API集成
- 实时监控MySQL导入进度的bash脚本技巧
- 使用MATLAB开发交流电压脉冲生成控制系统
- ESP32安全OTA更新:原生API与WebSocket加密传输
- Sonic-Sharp: 基于《刺猬索尼克》的开源C#游戏引擎
- Java文章发布系统源码及部署教程
- CQUPT Python课程代码资源完整分享
- 易语言实现获取目录尺寸的Scripting.FileSystemObject对象方法
- Excel宾果卡生成器:自定义和打印多张卡片
- 使用HALCON实现图像二维码自动读取与解码