避けられないピット--mapの初期化(データ挿入)
最近の作業ではmapを使用してクエリーを行う必要があります.
まずmapを簡単に紹介しますが、教科書で最も少ないSTL知識かもしれません.しかし、実際の仕事ではmapが重要で、検索が便利で、特にキーと値の形で存在します.
1、ヘッダファイル
2、mapの機能
Key-valueの対応を自動的に確立します.keyとvalueは任意に必要なタイプです.key値に基づいてレコードをすばやく検索すると,検索の複雑さは基本的にLog(N)であり,1000個のレコードがあれば最大10回,1000000個のレコードを検索し,最大20回検索する.Key-Valueレコードをすばやく挿入します.クイック削除レコードキーに従ってvalueレコードを変更します.すべてのレコードを巡回する.
3、mapのコンストラクション関数mapは6つのコンストラクション関数を提供し、私たちは通常以下の方法でmapを構築します.
4、データ挿入(1)my_Map[“a”]=1;
mapクラスが[]オペレータをリロードしているため、mapのエントリを変更するのは簡単です.
enumMap[1] = “One”;
enumMap[2] = “Two”;
…..
これは非常に直感的ですが、パフォーマンスの問題があります.2を挿入する場合、まずenumMapでプライマリ・キーが2の項目を検索し、見つからなかった後、新しいオブジェクトをenumMapに挿入し、キーは2で、値は空の文字列で、挿入が完了した後、文字列を「Two」に割り当てます.このメソッドでは、各値をデフォルト値に割り当て、表示される値に割り当てます.要素がクラスオブジェクトの場合、オーバーヘッドが大きくなります.コストを回避するには、次の方法を使用します.
最初は上の愚かな方法でデータを挿入しましたが、私のデータ量はとても大きくて、千組近く必要で、1本1本書くことはできません.
前に書いたブログ「c++11特性のinitializer_list」を思い出して、初期化リストを使ってmapに値を付けることができるのか、答えは肯定的です.
まずmapを簡単に紹介しますが、教科書で最も少ないSTL知識かもしれません.しかし、実際の仕事ではmapが重要で、検索が便利で、特にキーと値の形で存在します.
1、ヘッダファイル
#include
2、mapの機能
Key-valueの対応を自動的に確立します.keyとvalueは任意に必要なタイプです.key値に基づいてレコードをすばやく検索すると,検索の複雑さは基本的にLog(N)であり,1000個のレコードがあれば最大10回,1000000個のレコードを検索し,最大20回検索する.Key-Valueレコードをすばやく挿入します.クイック削除レコードキーに従ってvalueレコードを変更します.すべてのレコードを巡回する.
3、mapのコンストラクション関数mapは6つのコンストラクション関数を提供し、私たちは通常以下の方法でmapを構築します.
Map<int, string> mapStudent;
4、データ挿入(1)my_Map[“a”]=1;
mapクラスが[]オペレータをリロードしているため、mapのエントリを変更するのは簡単です.
enumMap[1] = “One”;
enumMap[2] = “Two”;
…..
これは非常に直感的ですが、パフォーマンスの問題があります.2を挿入する場合、まずenumMapでプライマリ・キーが2の項目を検索し、見つからなかった後、新しいオブジェクトをenumMapに挿入し、キーは2で、値は空の文字列で、挿入が完了した後、文字列を「Two」に割り当てます.このメソッドでは、各値をデフォルト値に割り当て、表示される値に割り当てます.要素がクラスオブジェクトの場合、オーバーヘッドが大きくなります.コストを回避するには、次の方法を使用します.
enumMap.insert(map<int, CString> :: value_type(2, "Two"))
my_Map.insert(map<string,int>::value_type("b",2));
my_Map.insert(pair<string,int>("c",3));
my_Map.insert(make_pair<string,int>("d",4));
最初は上の愚かな方法でデータを挿入しましたが、私のデータ量はとても大きくて、千組近く必要で、1本1本書くことはできません.
前に書いたブログ「c++11特性のinitializer_list」を思い出して、初期化リストを使ってmapに値を付けることができるのか、答えは肯定的です.
std::map<int, string> int_to_string = {
{1, "what"},
{2, "a"},
{3, "fuck"},
{4, "day"},
....
};