【c++】STLのunordered_map用法まとめ

2106 ワード

紹介する
  • unordered_mapはmapと同様に、格納されたkey-valueの値であり、keyによってvalueに迅速にインデックスすることができます.違うのはunordered_mapはkeyのサイズに基づいて
  • をソートしません.
  • 格納時はkeyのhash値に基づいて要素が同じか否かを判断する、すなわちunordered_map内部要素は無秩序であり,map中の要素は二叉探索ツリーに従って格納され,中序遍歴を行うと秩序遍歴が得られる.
  • ですので使用時mapのkeyはoperatorを定義する必要があります
  • カスタムタイプの場合はoperatorを自分でリロードする必要があります
  • 内部要素の自動ソートが必要な場合はmapを使用し、ソートを必要としないunordered_を使用します.map
  • cmakeを使用してunorderedを含むコンパイルを支援mapのソースコードは、#error This file requires compiler and library support for the ISO C++2011 standardと間違って報告される可能性があります.This support is currently experimental, and must be enabled with the -std=c++11 or -std=gnu++11 compiler options..これはunordered_を表します.mapはc++11の標準で、このときcmakelistにSET(CMAKE_CXX_FLAGS"-std=c++11-O 3")を加えるとコンパイルできます.

  • 使用法
    1.ヘッダファイル
    #include 
    

    2. unordered_map宣言と初期化
    3. unordered_map基本操作
    (1)反復器
  • beginは、容器の開始位置を指す反復器
  • を返す.
  • endは、容器の末尾の位置を指す反復器
  • を返す.
  • cbeginは、容器の開始位置を指すコンスタント反復器
  • を返す.
  • cendは、容器の末尾の位置を指す定数反復器
  • を返す.
    (2)容量
  • size有効要素個数
  • を返す
  • max_sizeはunorderedを返します.mapがサポートする最大要素数
  • emptyは、空の
  • であるか否かを判断する.
    (3)要素のアクセス
  • c[key]アクセス要素
  • c.at(key)アクセス要素
  • (4)要素の修正
  • insert挿入要素
  • erase削除要素
  • swap交換内容
  • clearクリア内容
  • emplace構造および1つの要素
  • を挿入する
  • emplace_hintプロンプトに従って要素
  • を構築および挿入する
    (5)操作
  • find所与のプライマリ・キーで要素を検索しましたが見つかりませんでした:unordered_を返しますmap::end()/これはとても重要で、leetcodeの上のいくつかの問題はこの特性
  • を使う必要があります
  • countは、所与のプライマリ・キーに一致する要素の個数
  • を返す.
  • equal_range戻り値が所与の探索値に一致する要素からなる範囲
  • (6)Buckets
  • bucket_count戻りスロット数
  • max_bucket_countは最大スロット数
  • を返す
  • bucket_Sizeリターンスロットサイズ
  • bucketは、要素が存在するスロットのシーケンス番号
  • を返します.
  • load_factorはロードファクタ、すなわち1つの要素スロットの最大要素数
  • を返す.
  • max_load_factorは最大ロードファクタ
  • を返すか設定する.
  • rehash設定スロット数
  • reserve要求変更容器容量
  • 参照先:https://blog.csdn.net/Windgs_YF/article/details/80623007