请问一下迭代器中的second()是做什么的?
map容器的迭代器里面有first ()和 second(),second是值,用来返回数据。
例如:
map<string, int> m;
m["one"] = 1;
map<string, int>::iterator p = m.begin();
p->first; // 这个是 string 值是 "one"
p->second; //这个是 int 值是 1
std::map<X, Y>实际储存了一串std::pair<const X, Y>,std::map<std::string, int> m = /* fill it */;、auto it = m.begin();
这里,如果你用*it,那么你将得到map第一个元素的std::pair,现在你可以接收std::pair的两个元素:,(*it).first会得到key,(*it).second会得到value,这等同于it->first和it->second。
扩展资料:
Iterator在Collection接口中的使用。
虽然Collection接口的相关类实现了get()方法,但将Iterator用在它们身上仍然是合适的,下面以ArrayList为例,讨论Iterator在Collection中的两中使用方法
1、配合while()循环实现遍历输出:
ArrayList list = new ArrayList();
Iterator it = list.iterator();
while(it.hasNext()){
System.out.println(it.next());6}
while()中的判断条件it.hasNext()用于判断it中是否还有下一元素,有的话就继续循环,输出语句中的it.next()既可以使“指针”往后走一位,又能将当前的元素返回,用于输出。
2、配合for()循环实现遍历输出:
ArrayList list = new ArrayList();
for(Iterator it = list.iterator();it.hasNext();){
System.out.println(it.next()); }
例如
map<string, int> m;
m["one"] = 1;
map<string, int>::iterator p = m.begin();
p->first; // 这个是 string 值是 "one"
p->second; //这个是 int 值是 1