通常使用insert给map容器添加新元素,这样可以避免不必要的初始化。
关于insert返回值的使用
map对象中一个给定键只对应一个元素。如果试图插入的元素所对应的键已在容器中,则insert将不做任何操作。但是带有一个键—值的insert将返回一个值:包含一个迭代器和一个bool值的pair对象,其中迭代器指向map中具有相应键的元素,bool值则表示是否插入了该元素。
例:
vector< pair<string,string> > chd; //为了制造带有键—值对的insert
pair< map<string,pair<string,string> > >::iterator,bool> ret=children.insert(make_pair(surname,chd));
if(!ret.second){
cout<<"Repeated surname :"<<surname<<endl;
continue;
}
cout<<"Enter children's name and birthday(Ctrl+Z to end):"<<endl;
while(cin>>childName>>birthday)//输入前面定义的chd
{
ret.first->second.push_back(make_pair(childName,birthday));
}
cin.clear();