迭代器作用:检查容器内元素、访问元素,是一种数据类型。
与下标操作的比较:所有标准库容器都有对应的迭代器类型,但只有少数容器支持下标操作。迭代器应用更广泛。
定义:如vector<int>::iterator iter;
iter的数据类型是由vector<int>定义的iterator类型。iterator是容器类型的成员函数。
迭代器有两种含义:一种就表示迭代器;另一种表示迭代器类型。
标准库pair类型:
头文件:utility
pair<T1,T2> p; 创建一个空的pair对象,两个元素分别为T1、T2类型,元素值初始化。
p.first 返回p中名为first的公有数据成员
p.second 返回p中名为second的公有数据成员
pair类可以直接访问其数据成员,其成员都是共有的,分别命名为first和second。用成员访问标志(点操作符)即可访问。
如:
pair<string,string> p;
string f,g;
p=make_pair(f,g);
访问p的元素时可用p.first,p.second。
map对象的元素为:键-值 对。
map容器中用作索引的键的类型:map<K,V>::key_type
map容器中键所关联值的类型:map<K,V>::mapped_type
map对象的值类型: map<K,V>::value_type 是pair类型,其first元素类型:const map<K,V>::key_type类型;其second元素类型:map<K,V>::mapped_type类型。
value_type 中的值成员可修改,而键成员不可修改。
对map迭代器解引用:
对迭代器解引用时,会产生一个引用,指向容器中一个value_type类型的值。map对象的value_type是pair类型,所以对map容器的迭代器解引用,会产生一个pair类型的引用。
map<int,int> m;
map<int,int>::iterator map_it=m.begin();
map_it.first 访问m中第一个元素的键
map_it.second 访问m中第一个元素的值