注:本文部分文字与图片资源来自于网络,转载此文是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即后台留言通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意
什么是迭代器?
迭代器是一种对象,它能够遍历容器中的各个元素,而不用考虑容器的内部结构。使用迭代器,我们既可以访问容器中的每一个元素,也可以修改容器中的元素。
使用迭代器遍历容器
在STL中,迭代器被用来遍历各种容器,包括vector、list、deque、set、map等。使用迭代器遍历容器的代码如下所示:
```
#include
#include
using namespace std;
int main() {
vector v = {1, 2, 3, 4, 5};
vector::iterator it;
for(it = v.begin(); it != v.end(); ++it) {
cout << *it << \" \";
}
cout << endl;
return 0;
}
```
在上面的代码中,我们使用了vector::iterator类型将变量it声明为迭代器,并使用迭代器遍历了vector容器v中的每一个元素。
迭代器的种类和使用
在STL中,有多种类型的迭代器,包括指针、const_iterator、reverse_iterator和const_reverse_iterator等。
指针迭代器:指向容器元素的指针。
```
vector v = {1, 2, 3, 4, 5};
vector::iterator it;
int* ptr;
it = v.begin();
ptr = &v[0];
if ( it == ptr ) {
cout << \"Same\" << endl;
} else {
cout << \"Different\" << endl;
}
```
上面的代码可以看到,迭代器it和指针ptr都指向vector容器v中的第一个元素,但它们的类型不同。我们可以使用==运算符比较它们是否相等。
const_iterator迭代器:只读迭代器,不能修改容器中的元素。
```
vector v = {1, 2, 3, 4, 5};
vector::const_iterator it;
for(it = v.begin(); it != v.end(); ++it) {
cout << *it << \" \";
*it = *it * 2;
}
```
在上面的代码中,我们使用了const_iterator类型的迭代器it来遍历vector容器v中的每一个元素。由于它是只读迭代器,因此我们不能修改容器中的元素。如果我们尝试修改元素值,编译器会报错。
reverse_iterator和const_reverse_iterator迭代器:逆向迭代器,从容器末尾开始遍历。
```
vector v = {1, 2, 3, 4, 5};
vector::reverse_iterator rit;
for(rit = v.rbegin(); rit != v.rend(); ++rit) {
cout << *rit << \" \";
}
```
在上面的代码中,我们使用了reverse_iterator类型的迭代器rit来逆向遍历vector容器v中的每一个元素。注意,使用逆向迭代器遍历向量时,容器末尾的元素被视为第一个元素。同样地,我们也可以使用const_reverse_iterator来定义只读的逆向迭代器。
总结
迭代器是STL中极其重要的一个概念,它支持我们对各种容器的遍历和修改操作。只要掌握了迭代器的使用方法,我们就能够更加灵活地操作容器,从而更加高效地完成各种任务。
本文标题:iterator(什么是迭代器?) 本文链接:http://www.cswwyl.com/meiwei/20877.html
下一篇 >
itunes怎么同步(iTunes同步操作指南)