STLメモ


//              
typedef std::map<:string> StringFloatMap;
StringFloatMap coll;
StringFloatMap::iterator pos;

for(pos = coll.begin(); pos != coll.end(); )
{
	if(pos->second == value)
		coll.erase(pos++);
	else
		++pos;
}
//  key/value  3   
//  1
std::map<:string> coll;
coll.insert(std::map<:string>::value_type("otto",22.3));


//  2
std::map<:string> coll;
//use implict conversition
coll.insert(std::pair<:string>::value_type("otto",22.3));
//use no implict conversition
coll.insert(std::pair::value_type("otto",22.3));

//  3
std::map<:string> coll;
coll.insert(std::make_pair("otto",22.3));

通常、関連コンテナは要素を提供しません.
直接アクセスするには、反復器に頼らなければなりません.しかしmapは例外です.Non-const mapは、要素の直接アクセスをサポートする下付きオペレータを提供します.
下付きオペレータのインデックス値は、要素の整数位置ではなく、要素のkeyです.
インデックスとしてキーを使用し、ウィンドウに対応する要素がまだ存在しない場合は、その要素が自動的に挿入されます.新しい要素のvalueはdefault構造関数によって構築されます.要素のvalue型別にdefaultコンストラクション関数が指定されていない場合は、使用できません.すべての基本データ型にはdefaultコンストラクタがあり、0値を初期値とします.、
メリット:
std::map<:string> coll;
coll["otto"] = 7.7;
文coll[「otto」=7.7;処理は次のとおりです.
1,処理coll["otto"]
-キー値が「otto」の要素がある場合、上記の式はその要素のreferenceを返します.
-エレメントのキー値が「otto」でない場合、上記の式はmapに新しいエレメントを自動的に挿入し、キー値が「otto」であり、実値valueはdefault構造関数で完了し、reference参照を返します.
2,7.7をvalueに割り当てる
-次に、7.7を上記の誕生したばかりの新しい要素に割り当てます.
 
欠点:
新しい要素を誤って配置した可能性があります.例:cout<
同時にこの元素の挿入方式比
一般的なmap挿入方式は遅く、
新しい要素はdefault構造関数を使用して実値を初期化しなければならないため、この初期値はすぐに本当のvalueに上書きされます.