Qt 용기 (QMap/QHash 등) 사용 설명

6396 단어 QTC/C++
1. Qt 용기 의 옮 겨 다 니 기
Qt 의 용기 류 는 두 가지 스타일 의 스 트 리밍 기 를 제공 합 니 다: 자바 풍격 과 STL 풍격
용기 마다 두 가지 가 있다. Java 스타일 의 달력: 읽 기 전용 접근 을 제공 하고 읽 기 전용 접근 을 제공 합 니 다.
용기.
읽 기 전용 달력
읽 기와 쓰기
QList,QQueue
QListIterator
QMutableListIterator
QLinkedList
QLinkedListIterator
QMutableLinkedListIterator
QVector,QStack
QVectorIterator
QMutableVectorIterator
QSet
QSetIterator
QMutableSetIterator
QMap,QMultiMap
QMapIterator
QMutableMapIterator
QHash,QMultiHash
QHashIterator
QMutableHashIterator
 
STL 스타일 리 셔
STL 스타일 Qt 2.0 제공 을 시작 하 겠 습 니 다.이런 달력 은 호 환 할 수 있다. Qt 화해시키다 STL 의 통용 알고리즘 을 사용 하고 속 도 를 최적화 시 켰 다.... 과 같다 Java 스타일 리 코더 유사, Qt 두 가지 도 제 공 했 어 요. STL 스타일 의 달력: 하 나 는 읽 기 전용 접근 이 고, 하 나 는 읽 기 전용 접근 입 니 다.읽 기 전용 접근 을 가능 한 한 사용 하 는 것 을 추천 합 니 다. 읽 기 전용 접근 기 보다 빠 르 기 때 문 입 니 다.
용기.
읽 기 전용 달력
읽 기와 쓰기
QList,QQueue
QList::const_iterator
QList::iterator
QLinkedList
QLinkedList::const_iterator
QLinkedList::iterator
QVector,QStack
QVector::const_iterator
QVector::iterator
QSet
QSet::const_iterator
QSet::iterator
QMap,QMultiMap
QMap::const_iterator
QMap::iterator
QHash,QMultiHash
QHash::const_iterator
QHash::iter
2. QMap 과 QHash 의 비교 분석
QMap 과 QHash 의 인 터 페 이 스 는 같 습 니 다. 직접 교체 해서 사용 할 수 있 습 니 다. 이들 의 차 이 는 다음 과 같 습 니 다.
(1) QHash 의 검색 속도 가 QMap 보다 현저히 빠르다.
(2) QHash 가 사용 하 는 저장 공간 이 QMap 보다 현저히 많다.
(3), QHash 는 원 소 를 임 의 방식 으로 저장 합 니 다.
(4) QMap 은 Key 순서 로 요 소 를 저장 합 니 다.
(5), QHash 사용자 정의 형식 을 주 키 로 사용 할 경우, QHash 키 형식 은 operator = = () 와 qHash (key) 함 수 를 제공 해 야 합 니 다.
(6) QMap 사용자 정의 형식 을 주 키 로 사용 할 경우 QMap 의 키 형식 은 operator 를 제공 해 야 합 니 다.
 
3. 인 스 턴 스 사용
#include "mainwindow.h"
#include 
#include 
#include 
#include 
#include 

struct Student
{
    QString name;
    int no;

    bool operator ,QQueue                  QListIterator        QMutableListIterator
    QLinkedList                      QLinkedListIterator  QMutableLinkedListIterator
    QVector,QStack                QVectorIterator      QMutableVectorIterator
    QSet                             QSetIterator         QMutableSetIterator
    QMap,QMultiMap      QMapIterator         QMutableMapIterator
    QHash,QMultiHash    QHashIterator        QMutableHashIterator
    */
    //----------------end Java       
    //------QMap
    QMap id2NameMap;
    id2NameMap.insert(2,"name2");
    id2NameMap.insert(1,"name1");
    id2NameMap.insert(3,"name3");
    qDebug()< it1(id2NameMap);
    while (it1.hasNext())
    {
        it1.next();
        if(2 == it1.key())
        {
            qDebug() << it1.value();
        }
    }

    //     
    QMutableMapIterator mit1(id2NameMap);
    while (mit1.hasNext())
    {
        mit1.next();
        if(2 == mit1.key())
        {
            mit1.setValue("name2new");
            qDebug() << mit1.value();
        }
    }
    qDebug()<,QQueue                  QList::const_iterator        QList::iterator
    QLinkedList                      QLinkedList::const_iterator  QLinkedList::iterator
    QVector,QStack                QVector::const_iterator      QVector::iterator
    QSet                             QSet::const_iterator         QSet::iterator
    QMap,QMultiMap      QMap::const_iterator    QMap::iterator
    QHash,QMultiHash    QHash::const_iterator   QHash::iter
     */

    //------QHash
    QHash id2NameHash;
    id2NameHash.insert(2,"hashName2");
    id2NameHash.insert(1,"hashName1");
    id2NameHash.insert(3,"hashName3");
    qDebug()<::const_iterator rIt1;
    for (rIt1 = id2NameHash.begin(); rIt1 != id2NameHash.end(); ++rIt1)
    {
        if(2 == rIt1.key())
        {
            qDebug() << rIt1.value();
        }
    }
    //     
    QHash::iterator wIt1;
    for (wIt1 = id2NameHash.begin(); wIt1 != id2NameHash.end(); ++wIt1)
    {
        if(2 == wIt1.key())
        {
            //    
            *wIt1 = "hashName2new";//    *              
            qDebug() << wIt1.value();
        }
        else if(3 == wIt1.key())
        {
            //    
            id2NameHash.insert(3,"hashName3new");
            qDebug() << wIt1.value();
        }
    }
    qDebug()< key2NameMap;
    Student tmp;
    tmp.no = 2;
    tmp.name = "name2";
    key2NameMap.insert(tmp,"name2");
    tmp.no = 1;
    tmp.name = "name1";
    key2NameMap.insert(tmp,"name1");
    tmp.no = 3;
    tmp.name = "name3";
    key2NameMap.insert(tmp,"name3");
//    qDebug()<::iterator cusIt1 = key2NameMap.find(find);
    if(cusIt1 != key2NameMap.end())
    {
        qDebug()< customHash;
    customHash.insert(Employee("name1", QDate(2018,10,21)),"name1");
    customHash.insert(Employee("name3", QDate(2018,10,23)),"name3");
    customHash.insert(Employee("name2", QDate(2018,10,22)),"name2");
    customHash.insert(Employee("name7", QDate(2018,10,27)),"name7");
    //     
    QHash::const_iterator rIt2;
    for (rIt2 = customHash.begin(); rIt2 != customHash.end(); ++rIt2)
    {
        qDebug() << rIt2.key().myName << ":" << rIt2.value();
    }
    //------end     QHash Key  


    MainWindow w;
    w.show();

    return a.exec();
}

 

좋은 웹페이지 즐겨찾기