It seems that
std::set<std::pair<std::string,std::string>>>
will have exactly the properties you are looking for.
However it is not a map nor multimap. You can keep both multimap and set of key,value pairs or create this set for checking consistency only.
I would use this set and create an adapter over it to multimap interface. Maybe it is not the easiest solution to implement, but with best performance efficiency.
See "adapter design pattern" questions for references.
[UPDATE]
See my working example as a start point.
E.g. how to iterate over all values for the key - see:
typedef std::set<std::pair<std::string, std::string> > ssset;
ssset::iterator get_key(ssset& s, std::string key)
{
ssset::iterator it = s.lower_bound(std::make_pair(key, ""));
if (it != s.end() && it->first == key) return it;
return s.end();
}
for (ssset::iterator it = get_key(s, "abc"); it != s.end() && it->first == "abc"; ++it)
std::cout << it->first << "->" << it->second << std::endl;