关于QMap对象改变后遍历输出的问题
锄手 2016-12-21 04:29:18 QMap<QString,QString> map;
map.insert("Beijing","111");
map.insert("Shanghai","021");
map.insert("Nanjing","025");
QMutableMapIterator<QString,QString> mi(map);
for(;mi.hasNext();)
qDebug()<<" "<<mi.key()<<" "<<mi.next().value();
if(mi.findNext("111"))
mi.setValue("010");
qDebug()<<" ";
for(mi.toFront();mi.hasNext();)
qDebug()<<" "<<mi.key()<<" "<<mi.next().value();
为什么前后两次的输出并没有改变,"Beijing"对应的值仍为"111",而不是"010"。
只有按照书上的程序:
QMap<QString,QString> map;
map.insert("Beijing","111");
map.insert("Shanghai","021");
map.insert("Nanjing","025");
QMapIterator<QString,QString> i(map);
for(;i.hasNext();)
qDebug()<<" "<<i.key()<<" "<<i.next().value();
QMutableMapIterator<QString,QString> mi(map);
if(mi.findNext("111"))
mi.setValue("010");
qDebug()<<" ";
QMapIterator<QString,QString> modi(map);
for(;modi.hasNext();)
qDebug()<<" "<<modi.key()<<" "<<modi.next().value();
才能成功将"Beijing”对应的值改为"010"。
我试图将迭代器i的定义省去,将第一次显示各键、值的功能改为由mi实现,
QMap<QString,QString> map;
map.insert("Beijing","111");
map.insert("Shanghai","021");
map.insert("Nanjing","025");
QMutableMapIterator<QString,QString> mi(map);
for(;mi.hasNext();)
qDebug()<<" "<<mi.key()<<" "<<mi.next().value();
if(mi.findNext("111"))
mi.setValue("010");
qDebug()<<" ";
QMapIterator<QString,QString> modi(map);
for(;modi.hasNext();)
qDebug()<<" "<<modi.key()<<" "<<modi.next().value();
也同样不能讲"Beijing”对应的值改为"010"。
麻烦各位大神解答下吧。第一次发帖怕解释不清楚,有点啰嗦了,见谅见谅。