C++Mapノット

3281 ワード

Map紹介
特徴:
1.mapはKeyのobjectとTのObjectを結合しているため、value typeがpairであることを示すPair Associative Containerである.
2.Unique Associative Containerでもあり、2つの要素が同じKeyを持っていないことを示しています.
3.Sorted Associative Containerであるため、3番目のパラメータはless、greaterのようなfunctorのみであり、比較すると、
hash tableはequal_to, not_equal_toとかのfunctor.
mapでよく使われる方法は主に以下のとおりです.
insert,erease,size,count,begin,end,find,clear,empty
Insertメソッド:
mapに要素を挿入します.mapに記録される要素は通常キー値ペアです.したがって,格納時には,キーと値をpairにカプセル化して挿入する.
    
    phone.insert(pair<string,string>(name,number));
    //  name number string     。

    //          
    phone[name]=number;
    //  phone  map<string,string>     。  map       []     。

1つ目は、挿入された要素のキー値がmapにすでに存在すると、挿入に失敗し、要素のキー値対情報は変更されず、キー値がmapで見つからないと、その新しい要素がmapに追加されます.
第2の方法は比較的直感的であるが,性能の問題がある.2を挿入するときは、まずphoneでプライマリ・キーがnameのアイテムを検索しますが、見つかりませんでした.その後、新しいオブジェクトをphoneに挿入します.キーはnameで、値は空の文字列です.挿入が完了すると、文字列をnumberに割り当てます.この方法では、各値をデフォルト値に割り当て、表示された値に割り当てられます.要素がクラス・オブジェクトの場合、オーバーヘッドが大きくなります.キー値がnameの項目が見つかったらnumberで元のnumber値を変更します.

    map<string,string> map;
    
    int Test::input(string name,string number)  
    {  
        //map[name]=number;  
        map.insert(pair<string,string>(name,number));  
        return 0;  
    }    


ereaseメソッド:
ereaseは主にmapの項目を削除し、phoneなどのパラメータkeyが必要です.erease(name);key値がnameのキー値ペアを削除することを意味します.
findメソッド:

    map<string,string> map;  
    int  Test::getNum(string name)
    {
	std::map<std::string, std::string>::iterator it = map.find(name);

	if(it == map.end()){  
		return -1;  
	}else{  
		return it->second;  
	}  
    }

sizeメソッド:
mapのキー値ペアの個数を統計しますphone.size()戻り値はphoneにおけるキー値ペアの個数であり、mapが空であれば0を返す

    map<string,string> map;  

   int Test::count(){  
       return map.size();  
   }  

countメソッド:
mapのキー値の出現回数を統計する、mapのキー値が一意であるため、この方法は、削除時にphoneできるように、キー値が存在するか否かを検出するために使用することができる.count(name)は,0であればユーザにこのキー値が存在しないことを促すことができ,1であれば直接削除する.Ps:ereaseは、削除するキー値ペアが存在するかどうかにかかわらず正常に実行されます.

    map<string,string> map;  

begin、endメソッド:
beginメソッドはmap反復器タイプを返し,endメソッドの戻り値と比較することでmapを容易に遍歴できる.

    map<string,string> map;  

    int Test::showAll()  
    {  
        map<string,string>::iterator ite = map.begin();  
        while(ite!=phone.end()) {  
            cout<<ite->first<<"\t";  
            cout<<ite->second<<endl;  
            ite++;  
        }  
        return 0;  
    }  

clearメソッド:
mapのすべての要素をクリア

    map<string,string> map;  
    int Test::clear()
    {
        map.clear();  
    }

Emptyメソッド:
mapが空かどうかを判断し、空であれば真を返し、空でなければ偽を返す.
Ps:mapにはキー値ペアが格納されているため、反復器がiteの場合、ite->firstはkey、ite->secondは値