#include <qDebug>
using namespace std;
class MapTest
{
public:
MapTest() {}
void ShowMap()
{
if (!m_map.isEmpty())
return;
m_map.insert("111","aaa");
if (!m_map.contains("222"))
{
m_map.insert("222","bbb");
}
m_map["333"] = "ccc"; // 同insert。
qDebug() << "m_map[\"333\"] value:" << m_map["333"]; // 取某一key的值。
qDebug() << "m_map[\"333\"] value:" << m_map.value("333");
qDebug() << "m_map[\"333\"] value:" << m_map.value("444", "ddd"); // 如果没有这个元素,就提供一个缺省值
if (m_map.contains("111"))
{
QMap<QString, QString>::iterator it = m_map.find("111"); // 找到特定的键值对。
qDebug() << "find 111 value:" << it.value();
}
QMap<QString, QString>::iterator iter = m_map.begin();
while (iter != m_map.end())
{
qDebug() << "Iterator " << iter.key() << ":" << iter.value(); // 迭代器
iter++;
}
QMapIterator<QString, QString> it(m_map);
while (it.hasNext()) {
it.next();
qDebug() << "QMapIterator " << it.key() << ":" << it.value(); // java风格迭代器
}
QMap<QString, QString>::const_iterator constIter = m_map.constBegin();
while (constIter != m_map.constEnd()) {
qDebug() << "const_iterator " << constIter.key() << ":" << constIter.value(); // 迭代器
constIter++;
}
m_map.insert("111", "111aaa"); // 插入时,已存在的key,会将value更新掉。
m_map["111"] = "aaa";
QList<QString> values = m_map.values("111");
for (int i = 0; i < values.count(); i++)
{
qDebug() << "QList values" << values.at(i);
}
foreach (QString str, m_map) {
qDebug() << "foreach values" << str; // foreach 遍历取值
}
m_map.remove("111");
m_map.clear();
qDebug() << "map size" << m_map.count();
}
private:
QMap<QString, QString> m_map;
};
class Employee
{
public:
Employee() {}
Employee(const QString& strKey, const QString& strValue) : m_strKey(strKey), m_strValue(strValue) {}
QString getKey() const {return m_strKey;}
QString getValue() const { return m_strValue; }
private:
QString m_strKey;
QString m_strValue;
};
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
MapTest mapTest;
mapTest.ShowMap();
QMap<QString, Employee> empMap;
empMap["111"] = Employee("aaaa", "1111");
Employee temp("bbbb", "2222");
empMap.insert("222", temp);
QMap<QString, Employee>::iterator it = empMap.begin();
while (it != empMap.end()) {
qDebug() << it.key().toLocal8Bit().data()
<< it.value().getKey().toLocal8Bit().data()
<< it.value().getValue().toLocal8Bit().data();
++it;
}
return a.exec();
}