std::multimap<int, std::string> m; m.insert(std::make_pair(0, "w0")); m.insert(std::make_pair(1, "w1")); m.insert(std::make_pair(1, "w11")); m.insert(std::make_pair(2, "w2")); for (std::multimap<int, std::string>::iterator it = m.begin(); it != m.end(); it++) { printf("%d - %s\n", it->first, it->second.c_str()); } std::multimap<int, std::string>::iterator fit = m.find(1); //just first one that key = 1 std::pair<std::multimap<int, std::string>::iterator, std::multimap<int, std::string>::iterator> pr = m.equal_range(1); //all that key = 1 std::multimap<int, std::string>::iterator pit = pr.first; while (pit != pr.second) { printf("%d - %s\n", pit->first, pit->second.c_str()); pit++; }