プロジェクトが使用されているので、unordered_mapとmapの違いを大まかに記録するために時間をかけてください
次の比較は、unordered_map(順序付けられていないマップ)に基づいています。
1.ヘッダーファイル
#include <unordered_map>
#include <map>
2. unordered_mapの内部実装:ハッシュテーブル
[およびマップは赤黒ツリーを実装しています]
3. Unordered_map検索効率:非常に高い
unordered_map内部ハッシュテーブルは、キーコード値をハッシュテーブル内の位置にマッピングすることによってレコードにアクセスします。検索の時間の複雑さは、大規模なデータ処理で広く使用されているO(1)に達する可能性があります。 。
[マップを1つずつトラバースする必要があるため、非効率的です]
4. unordered_mapが順序付けられているかどうか:Disordered
unordered_mapは内部のハッシュテーブルであるため、要素が追加されても並べ替えられません。
[そして、赤黒の木はマップ内に実装されているため、マップは要素に格納されるときに自動的にソートされ、デフォルトの昇順は]
以下のため例、
unordered_map栗を与えます:
unordered_map<int, string> m_map;
m_map.insert(pair<int, string>(3, "333"));
m_map.insert(pair<int, string>(1, "111"));
m_map.insert(pair<int, string>(4, "444"));
m_map.insert(pair<int, string>(2, "222"));
m_map.insert(pair<int, string>(5, "555"));
unordered_map<int, string>::iterator iter = m_map.begin();
for (iter; iter != m_map.end(); iter++)
{
cout << iter->first << "," << iter->second.c_str() << endl;
}
出力:
3,333
1,111
4,444
2,222
5,555
unordered_map出力の結論:無秩序と見なすことができます。
マップ栗を取ります。コード内でunordered_mapをmapに置き換えるだけです。
map<int, string> m_map;
m_map.insert(pair<int, string>(3, "333"));
m_map.insert(pair<int, string>(1, "111"));
m_map.insert(pair<int, string>(4, "444"));
m_map.insert(pair<int, string>(2, "222"));
m_map.insert(pair<int, string>(5, "555"));
map<int, string>::iterator iter = m_map.begin();
for (iter; iter != m_map.end(); iter++)
{
cout << iter->first << "," << iter->second.c_str() << endl;
}
出力:
1,111
2,222
3,333
4,444
5,555
マップ出力の結論:それは整然としたものとして見ることができます。
終わり:
共有することは、問題への理解を深める方法でもあります。包括的ではないかもしれませんが、間違いなく便利であり、今後も改善されていきます〜