QMap简单用法

#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();
}

                
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值