迭代器,来了!!!
本篇博文主要讲解如何使用迭代器进行容器的遍历,以及介绍如何使用迭代器进行insert(插入)和erase(删除)操作,辅助数据结构为vector。
代码和相关注释如下:
#include<iostream>
#include<vector>
using namespace std;
int main() {
//$STL迭代器
//iterator迭代器又称为Cursor模式,它提供了一种访问聚合对象元素的方法。
//并且这种方法不会暴露聚合对象的内部表示,简而言之,通过利用迭代器,我们可以
//按照某种顺序访问聚合对象的元素而不知道该聚合对象的内部表示。
//Advantages of using iterator
//由于使用迭代器时,我们并不知道聚合对象的内部表示,因而实现了迭代器与算法互不干扰的相互发展
//且能使数据结构和算法粘合起来。
//迭代器重载了*,++,==,!=,=等运算符,以用于操作复杂的数据结构。容器提供迭代器,而算法使用迭代器。
//常见的迭代器类型有iterator,const_iterator,reverse_iterator和const_reverse_iterator,这些迭代器
//的主要区别在于访问顺序以及一些属性上存在差异(比如,迭代器是否可修改,访问顺序使正或者反的方向)
//以下实例代码主要演示了使用迭代器进行的一些常规操作
//比如利用迭代器如何进行遍历,如何利用迭代器进行插入和删除等问题
vector<int>v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);//从数组尾部添加元素
cout << "下标访问数值第三个元素为:" << v[2] << endl;
cout << "使用迭代器输出vector元素" << endl;
vector<int>::iterator iter = v.begin();
for (; iter != v.end(); iter++) {
cout << *iter << " ";//输出迭代器遍历内容
}
cout << endl;
//在第一个元素之前插入100,insert begin+n表示在n个元素之前插入元素
//默认为1
v.insert(v.begin(), 100);
//在最后一个元素之后插入50,insert end+n表示在第n个元素之后添加元素
//默认为1
v.insert(v.end(),50);
for (vector<int>::iterator i = v.begin(); i != v.end(); i++) {
cout << *i<<" ";//在表达式中直接迭代
}
cout << endl;
vector<int>arr(10);
for (int i = 0; i < 10;i++) {
arr[i] = i;
}
for (vector<int>::iterator iter1 = arr.begin(); iter1 != arr.end(); iter1++) {
cout << *iter1<<" ";//输出迭代内容
}
cout << endl;
//删除,erase,思想和insert差不多
arr.erase(arr.begin(), arr.begin() + 5);//删除第一个到第五个元素
for (vector<int>::iterator iter2 = arr.begin(); iter2 != arr.end(); iter2++) {
cout << *iter2<<" ";//输出删除后的结果
}
return 0;
}
运行结果如下图所示:
加油!!! 肝!!!