【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.ヘッダファイル
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
使用法
1.ヘッダファイル
#include
2. unordered_map宣言と初期化
3. unordered_map基本操作
(1)反復器
(2)容量
(3)要素のアクセス
(5)操作