ケケは、C ++を学ぶ良いが学校で大きな問題になりましたされていません。できませんどのような
ことにいくつかの簡単な操作を追加し、その後良いunordered_map
定義
それは呼ばれています:無秩序マッピング。
C ++ STLのunordered_mapはO(1)時間の要素を実現するために、ハッシュテーブルルックアップを使用して実装するが、頭上の空間に対応して増加します。
いくつかは私のC ++カブスはまた、バランスをオフにスローされ、拡張されていない、私はそれを見ていない赤黒木を備えて...、その特性を比較し、情報をマップ
STLに対応する地図データ構造は、赤、黒の木であります、時間が赤黒木の複雑さを見ると赤黒木にデータ整然とO(logN個)を、unordered_mapクエリ速度に対して低下したが、余分なスペースのオーバヘッドが低減されます。
共通機能
声明
#include <unordered_map>
using namespace std;
// <.., ..> 中指明两个变量类型,key-value
unordered_map<string, int> map;
コンテナのサイズ
cout << map.empty() << endl;
cout << map.size() << endl;
キーと値のペアを挿入
map['A'] = 1;
// or
map.insert(make_pair('A', 1));
キーの値があるかどうかを決定します
検索()関数と終了()関数:私達は私達がちょうど述べたマップは、あなたがunordered_mapを使用することができる場合メンバ関数「B」をテストしたいとします。
検索()とend()戻り値のデータ型は、イテレータであることに注意してください。
unordered_mapで、見つけた場合は()私は鍵を見つけ、そしてリターンはイテレータ値として)(終了しました。
// 'B' is not a key
if(map.find('B') == map.end()) {
// your code
}
// or
if(map.count('B') == 0) {
// your code
}
要素を削除します
スコープと削除キー値に応じて削除要素の3つのタイプがあります。
//删除元素
second.erase ( second.begin() ); // erasing by iterator
second.erase ('a'); // erasing by key
second.erase ( second.find('c'), second.end() ); // erasing by range
他の
map.clear(); // 清空