容器,该容器其实是QMap的一个子集,用于处理多值映射的类,也就是说传统QMap只能是一对一的关系,而QMultiMap则可以实现一个Key对应多个Value或者是反过来亦可,实现一对多的关系。 QMultiMap 允许重复键: QMultiMap 中可以包含重复的键,即多个键可以映射到相同的值。 键排序: QMultiMap 中的元素是按键的升序排列的。 不同点 键唯一性: QMap 中每个键都是唯一的,而 QMultiMap 允许重复的键。 使用场景: QMap 适用于需要键唯一的情况,而 QMultiMap 适用于允许键重复的情况。 如下所示,展示了如何使用QMultiMap实现一对多的映射关系; #include <QCoreApplication> #include <iostream> #include <QString> # include <QList> #include <QMultiMap> int main(int argc, char *argv[]) { QCoreApplication a(argc,
QJsonObject m_jsonBody; QNetworkAccessManager::Operation m_op; HttpService *m_httpService; QMultiMap HttpResponse类头文件源代码: #ifndef HTTP_RESPONSE_H #define HTTP_RESPONSE_H #include <QNetworkReply> #include <QMultiMap QNetworkReply* reply); Is_AutoInfer: true */ }; explicit HttpResponse(QNetworkReply *parent, const QMultiMap bytesTotal); protected: qint64 readData(char *data, qint64 maxlen); void slotsMapOperation(QMultiMap downloadProgress(qint64 bytesReceived, qint64 bytesTotal); private: HttpResponse(); private: QMultiMap
)); // std::map转QMap QMap<QString, int> qMap(stdMap.begin(), stdMap.end()); (3) 处理多值映射 // 若需一键多值,使用QMultiMap QMultiMap<QString, int> multiMap; multiMap.insert("Fruit", 10); multiMap.insert("Fruit", 20); // 允许重复键
multiple values per key by using insertMulti() instead of insert() (or using the convenience subclass QMultiMap See also find() and QMultiMap::constFind(). See also count() and QMultiMap::contains(). See also contains(), insertMulti(), and QMultiMap::count(). See also clear(), take(), and QMultiMap::remove().
()<<qmap <<endl; qDebug() << "--------------------------------------------"; //当一个键对应多个值的时候 使用QMultiMap 来实例化一个QMap对象 QMultiMap<QString, QString> multimap; //multimap["student"] = "no"; //此时这种插值方法是不可以的
"{}"组成,按照这一个规则就可以初始化或赋值的简化了; (2) 除了QList序列化容器外,它还支持QLinkedList,QVector; (3) 除了QMap关联容器外,它还支持QMultiMap
"uname = " << ref.uname.toStdString().data() << std::endl; } return a.exec();}关联容器关联容器: qmap,qmultimap ,qhash,qmultihash,qmultihash,qsetqmap/qmultimap: 提供了一个字典类型的关联数组,一个键映射一个值,qmap是按照顺序存储的,如果不在意顺序可以使用qhash : "; std::cout << x.toStdString().data() << std::endl; } } return a.exec();}qmultimap #include <QCoreApplication>#include <iostream>#include <QString>#include <QList>#include <QMultiMap>struct qint32 uid; QString uname;};int main(int argc, char *argv[]){ QCoreApplication a(argc, argv); QMultiMap
uname = " << ref.uname.toStdString().data() << std::endl; } return a.exec(); } 关联容器 关联容器: qmap,qmultimap ,qhash,qmultihash,qmultihash,qset qmap/qmultimap: 提供了一个字典类型的关联数组,一个键映射一个值,qmap是按照顺序存储的,如果不在意顺序可以使用qhash std::cout << x.toStdString().data() << std::endl; } } return a.exec(); } qmultimap #include <QCoreApplication> #include <iostream> #include <QString> #include <QList> #include <QMultiMap QString uname; }; int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); QMultiMap
例如: QMultiMap<int, QString> multiMap; multiMap.insert(1, “one”); multiMap.insert(1, “eins”); multiMap.insert qt-qhash-and-qmap-difference.html QMap提供了一个从类项为key的键到类项为T的直的映射,通常所存储的数据类型是一个键对应一个直,并且按照Key的次序存储数据, 这个类也支持一键多值的情况,用类QMultiMap
一个键对应多个值 /* 使用QMultiMap类来实例化一个QMap对象 */ QMultiMap<QString, QString> multiMap; multiMap.insert
QMap提供了一个从类项为key的键到类项为T的直的映射,通常所存储的数据类型是一个键对应一个直,并且按照Key的次序存储数据,这个类也支持一键多值的情况,用类QMultiMap QHash具有和QMap
HttpResponse::HttpResponse(QNetworkReply *parent, const QMultiMap<QString, QMap<QString, const QObject void HttpResponse::slotsMapOperation(QMultiMap<QString, QMap<QString, const QObject *> > &slotsMap) {
Qt容器类 Qt容器类的分类: 1.连续容器:QVector、QLinkedList、QList、QStack(继承QVector)、 QQueue(继承QList) 2.关联容器:QSet、QMap、QMultiMap 关联容器 QSet<T> 它提供一个键值对集合,可以快速的进行查找, QMap<Key, T> QMultiMap<Key, T> QMap是一个以升序键顺序存储键值对的数据结构,QMultiMap是QMap const_iterator QVector<T>::iterator QSet<T> QSet<T>::const_iterator QSet<T>::iterator QMap<Key, T>, QMultiMap … foreach (const QString &str, map.keys()) qDebug() << str << “:” << map.value(str); 或者: QMultiMap Insertion Average Worst case Average Worst case QMap<Key, T> O(log n) O(log n) O(log n) O(log n) QMultiMap
QMultiMap<QString, QMap<QString, const QObject *>> m_slotsMap; m_slotsMap变量 <2.1>值得一提的是m_slotsMap
关于QMap的几点总结思考 题记: 前段时间集中精力写了数据的分拣算法,用到了容器QMap和QMultiMap。
存储一键多值数据时可使用QMultiMap< key,T>容器或QMultiHash< key, T>容器 默认从小到大排序。 = infoMap.end();i_rw++) { qDebug()<<*i_rw;//value } //一个键对应多个值 QMultiMap<QString
",100); map.insert("plenty",2000); //"plenty"对应的值100,修改为2000 如果想让一个键对应多个值,可以通过调用函数insertMulti()实现(或者QMultiMap
关联式容器 QMap QMultiMap QHash QMultiHash QSet “multi”容器方便地支持与单个键相关联的多个值。 QVector,QStack QVectorIterator QMutableVectorIterator QSet QSetIterator QMutableSetIterator QMap<Key,T>,QMultiMap QStack QVector::const_iterator QVector::iterator QSet QSet::const_iterator QSet::iterator QMap<Key,T>,QMultiMap const Key &key) const int count() const int size() const bool empty() const bool isEmpty() const QMultiMap
存储一键多值的数据时,也可以使用QMultiMap<Key,T>容器,它继承自QMap。 2.QHash类 QHash<Key,T>具有和QMap差点儿全然同样的API。