一、对于迭代器得理解
? ? ? ? 迭代器就是类似于c语言的指针(大概就是这样理解的)。
二、迭代器的基本形式
????????map<string,int>::iterator iter;(iter就是类似于指针的应用?)
?三、案例
(1)基础迭代器的使用方法
#include<iostream>
#include<map>
using namespace std;
int main()
{
//map中的一一对应一个【string的值】和【int的值】一一对应的
map<string, int>mp;
mp["student_1"] = 1;
mp["student_2"] = 2;
mp["student_3"] = 3;
//迭代器的类型要和上面定义的对应,
//上面定义的是mp<string,int>mp,下面的迭代器也是要map<string,int>::iterator
map<string, int>::iterator iter;
//先让iter指向mp的开头,到mp的末尾结束;
for (iter = mp.begin(); iter != mp.end(); iter++) {
//iter->first指向第一个即string,iter->指向第二个即int
cout << iter->first << " " << iter->second << endl;
}
return 0;
}
输出:
student_1 1
student_2 2
student_3 3
(2)利用C++11的新特新auto来完成对map的访问
#include<iostream>
#include<map>
using namespace std;
int main()
{
//map中的一一对应一个【string的值】和【int的值】一一对应的
map<string, int>mp;
mp["student_1"] = 1;
mp["student_2"] = 2;
mp["student_3"] = 3;
//auto会自动识别识别it为迭代器类型的值
for (auto iter = mp.begin(); iter != mp.end(); iter++) {
cout << iter->first << " " << iter->second << endl;
}
return 0;
}
输出:
student_1 1
student_2 2
student_3 3
(3)反向迭代器
#include<iostream>
#include<map>
using namespace std;
int main()
{
//map中的一一对应一个【string的值】和【int的值】一一对应的
map<string, int>mp;
mp["student_1"] = 1;
mp["student_2"] = 2;
mp["student_3"] = 3;
//迭代器的类型要和上面定义的对应,
//上面定义的是mp<string,int>mp,下面的迭代器也是要map<string,int>::iterator
map<string, int>::reverse_iterator iter;
//先让iter指向mp的反向开头(即末尾),到mp的反向开头结束(即开头);
//是rbegin和rend.
for (iter = mp.rbegin(); iter != mp.rend(); iter++) {
//iter->first指向第一个即string,iter->指向第二个即int
cout << iter->first << " " << iter->second << endl;
}
return 0;
}
输出:
student_3 3
student_2 2
student_1 1
|