Qt QMap 과 QHash 의 차이

5999 단어 QT
QMap
  • QMap 은 키 쌍 을 오름차 순 으로 저장 하 는 데이터 구조
  • QMap 원형 은 class QMap
  • QMap 에서 키 키 키 에 따라 오름차 순 정렬
  • QMap 에서 key 의 종 류 는 operator 를 다시 불 러 와 야 합 니 다.
  • QMap 은 키 로 분류 되 는 키 에서 값 으로 분류 되 는 값 에 대한 맵 을 제공 합 니 다. 일반적으로 저 장 된 데이터 형식 은 키 가 하나의 값 에 대응 하 는 것 입 니 다
  • .
  • 원 키 다수 치 의 경우 클래스 QMultiMap 으로 가능 합 니 다.
  • 키 값 은 모두 임의의 유형
  • 일 수 있 습 니 다.
  • 교체 기 가 모든 키 값 을 가리 키 는 요 소 를 정의 할 수 있 습 니 다. 하나의 포인터
  • 로 이해 할 수 있 습 니 다.
  • key 를 통 해 value 를 가 져 올 때:
  • key 가 존재 할 때: 대응 하 는 value
  • 를 되 돌려 줍 니 다.
  • key 가 존재 하지 않 을 때: value 형식 에 대응 하 는 '0 값' 을 되 돌려 줍 니 다
  • 키 값 을 삽입 할 때:
  • key 가 존재 할 때: value 의 값 업데이트
  • 키 가 존재 하지 않 을 때: 새로운 키 쌍 삽입

  • QHash
  • QHash 는 Qt 의 해시 데이터 구조
  • QHash 원형 은 class QHash
  • QHash 키 쌍 이 내부 에서 무질서 하 게 배열 되 어 있 음
  • QHash 의 key 형식 은 operator = = 연산 자 를 다시 불 러 와 야 합 니 다
  • QHash 의 key 대상 은 전역 qHash () 함수
  • 를 다시 불 러 와 야 합 니 다.
  • 이러한 유지 보 수 는 해시 표 입 니 다. 표 의 크기 와 데이터 항목 은 자가 적응
  • 입 니 다.
  • QHash 는 임의의 순서 로 저 장 된 데이터
  • 또한 원 키 다 중 값 을 지원 할 수 있 으 며, 클래스 QMultiHash 로 구현 할 수 있 습 니 다.
  • 키 값 은 모두 임의의 유형
  • 일 수 있 습 니 다.
  • QMap 은 QHash 와 인터페이스 가 같 아 직접 교체 하여 사용 할 수 있다
  • 설 정 된 키 에 따라 대응 하 는 값 을 쉽게 얻 을 수 있 고 QMap 보다 검색 효율 이 높 습 니 다.
  • 교체 기 it 는 하나의 지침 으로 이해 할 수 있 으 며, QMap 대상 의 모든 요 소 를 가리 킬 수 있 습 니 다
  • 둘 의 차이:
  • QHash 의 검색 속도 가 QMap 보다 현저히 빠르다.
  • QHash 의 배열 은 qhash () 라 는 전역 해시 함 수 를 호출 한 후에 얻 은 ID 이기 때문에 함 수 를 호출 한 후에 이 ID 를 거의 즉시 얻 을 수 있 기 때문에 포 지 셔 닝 속도 가 매우 빠르다.한편, QMap 은 버튼 값 의 오름차 순 으로 배열 되 어 있 기 때문에 2 분 검색 방법 으로 찾 을 수 있 고 속도 가 많이 느 릴 수 있 습 니 다.

  • QHash 가 차지 하 는 저장 공간 은 QMap 보다 현저히 많 고 QHash 의 속 도 는 공간 을 이용 하여 바 꾼 것 이다.
  • QHash 는 임의의 방식 으로 요 소 를 저장 합 니 다. qHash 함 수 를 호출 하여 ID 를 얻 기 때문에 배열 이 불규칙 합 니 다.QMap 은 key 의 오름차 순 으로 저 장 됩 니 다.
  • QHash 의 키 형식 은 operator = = () 와 qHash () 함 수 를 제공 해 야 합 니 다.QMap 의 키 종 류 는 operator 를 제공 해 야 합 니 다.

  • QMap 사용:
    void QMap_Test()
    {
        QMap map;
    
        map.insert("key 2", 2);//     
        map.insert("key 1", 1);
        map.insert("key 0", 0);
        map.insert("key 5", 5);
        map.insert("key 6", 6);
        map.insert("key 4", 4);
        map.insert("key 3", 3);
    
        QList klist = map.keys();//  QMap              QList 
    
        for(int i = 0; i < klist.count(); i++)
        {
            qDebug() << klist[i];
        }
    
        QList vlist = map.values();//  QMap              QList 
    
        for(int i = 0; i < vlist.count(); i++)
        {
            qDebug() << vlist[i];
        }
    
        QMapIterator it(map);//      ,it        0        
        while(it.hasNext())//         
        {
            it.next();
            qDebug() << it.key() << " : " << it.value();
    
        }
    }

     
    QHash 사용:
    void QHash_Test()
    {
        QHash hash;
    
        hash.insert("key 1", 1);   
        hash.insert("key 58", 58);
        hash.insert("key 7", 7);
        hash.insert("key 45", 45);
        hash.insert("key 12", 12);
        hash.insert("key 56", 56);
        hash.insert("key 34", 34);
    
        QList klist = hash.keys();
        for(int i = 0; i < klist.count(); i++)
        {
            qDebug() << klist[i];
        }
    
        QList vlist = hash.values();
        for(int i = 0; i < vlist.count(); i++)
        {
            qDebug() << vlist[i];
        }
    
        hash["key 44"] = 44;//        
        QHash::const_iterator it;//      ,it        0        
        for(it = hash.constBegin(); it != hash.constEnd(); ++it)
        {
            qDebug() << it.key() << " : " << it.value();
        }
    }

    QMap 과 QHash 의 인터페이스 함수:
  • iterator begin () 은 0 위 요 소 를 가리 키 는 교체 기
  • 를 되 돌려 줍 니 다.
  • const_iterator begin () const 기능 동상
  • void clear () 모든 요소 비우 기
  • const_iterator constBegin () const 는 0 번 째 위치 요 소 를 가리 키 는 const 형식의 교체 기
  • 를 되 돌려 줍 니 다.
  • const_iterator constEnd () const 는 마지막 요 소 를 가리 키 는 다음 가상 위 치 를 가리 키 는 const 형식의 교체 기
  • 를 되 돌려 줍 니 다.
  • const_iterator constFind (const Key & key) const 반환 키 키 키 에 대응 하 는 요소 위치의 const 형식의 교체 기
  • bool contains (const Key & key) const 키 에 대응 하 는 키 쌍 이 있 으 면 true 로 돌아 갑 니 다. 그렇지 않 으 면 false
  • 로 돌아 갑 니 다.
  • int count (const Key & key) const 는 Key 와 연 결 된 키 값 의 수 를 되 돌려 줍 니 다
  • bool empty () const 가 비어 있 는 지 여부
  • iterator erase (iterator pos) pos 가 가리 키 는 요 소 를 제거 합 니 다
  • iterator find (const Key & key) 는 key 에서 찾 은 키 값 에 맞 는 itreator
  • 를 되 돌려 줍 니 다.
  • const_iterator find (const Key & key) const const 버 전
  • iterator insert (const Key & key, const T & value) 는 키 쌍 을 삽입 하고, 삽 입 된 키 가 존재 하면 원래 키 쌍 을 교체 합 니 다.이 키 가 여러 value 와 연결 되 어 있다 면 마지막 으로 삽 입 된 키 쌍 은 덮어 씁 니 다
  • iterator insert Multi (const Key & key, const T & value) 는 하나의 key 를 여러 개의 value
  • 와 연결 시 킬 수 있 습 니 다.
  • const Key key (const T & value) const 는 value 에 따라 첫 번 째 key
  • 를 가 져 옵 니 다.
  • QList keys () const
  • QList keys ( const T & value ) const
  • int remove ( const Key & key )
  • int size () const
  • T take ( const Key & key )
  • std::map toStdMap () const
  • QList uniqueKeys () const
  • const T value ( const Key & key ) const
  • const T value ( const Key & key, const T & defaultValue ) const
  • QList values () const
  • QList values ( const Key & key ) const

  •  
    소결:
  • Qt 에서 키 쌍 을 저장 할 클래스 템 플 릿 을 제공 합 니 다
  • QHash 와 QMap 은 같은 인 터 페 이 스 를 따른다
  • QHash 의 검색 속 도 는 QMap
  • 보다 빠르다.
  • QMap 에 필요 한 메모리 공간 은 QHash
  • 보다 작 습 니 다.
  • QHash 는 key 유형 에 대한 요구 가 QMap
  • 보다 높다.
     

    좋은 웹페이지 즐겨찾기