两种遍历方式都使用迭代器:
1QMap使用Iterator.key(),和Iterator.value()方法获取第一个或第二个元素的值。
而std::map使用Iterator->first(), Iterator->second()来获取第一个或第二个元素的值。
QMap<QString,QString> m_RatioCfg;
QMap<QString,QString>::Iterator it;
for(it = m.begin();it != m.end();++it)
{
cout<<"key:"<<it.key()<<"value:"<<it.value()<<endl;
//pText->append("key="+it.key()+"value="+it.value()); //在文本中显示键值
}
#include<map>
#include<string>
#include<iostream>
using namespace std;
int main()
{
map<int,string*> m;
m[1]= new string("1111111111111111");
m[2]= new string("2222222222222222");
m[3]= new string("3333333333333333");
m[4]= new string("4444444444444444");
m[0]= new string("5555555555555555");
map<int,string*>::iterator it;
for(it=m.begin();it!=m.end();)
{
cout<<"key: "<<it->first <<" value: "<<it->second<<endl;
delete it->second;
m.erase(it++);
}
return 0;
}
注意删除操作
QMap的删除
QMap<int, int>::iterator it;
QMap<int, int>::iterator ait;
for (it = mapIntToInt.begin();it != mapIntToInt.end(); )
{
int num = it.key();
qDebug() << "thecurrent number is " << num;
if (num % 2 == 0)
{
mapIntToInt.erase(it);
qDebug() << "erasenumber : " << num;
}
else
{
it++;
}
}
std::map的删除
- std::map<std::string, std::string >::iterator it = mapTest.begin();
- while(it != mapTest.end())
- {
- if(TestVal(it->second))
- {
- mapTest.erase(it++);
- }
- else
- it++;
- }