Не самый лучший вариант, но может быть полезен в немногих случаях, когда пользователь присваивает значение по умолчанию, например 0 или NULL, при инициализации.
Ex.
< int , string >
< string , int >
< string , string >
consider < string , string >
mymap["1st"]="first";
mymap["second"]="";
for (std::map<string,string>::iterator it=mymap.begin(); it!=mymap.end(); ++it)
{
if ( it->second =="" )
continue;
}