#include <iostream>
#include <map>
#include <string>
void printMultimap(const std::multimap<std::string, int>& mm) {
for (const auto& pair : mm) {
std::cout << pair.first << ": " << pair.second << std::endl;
}
std::cout << "Size: " << mm.size() << std::endl << std::endl;
}
int main() {
std::multimap<std::string, int> wordCount;
// Inserting elements
wordCount.insert({"apple", 1});
wordCount.insert({"banana", 2});
wordCount.insert({"apple", 3});
wordCount.insert({"cherry", 4});
wordCount.insert({"banana", 5});
std::cout << "Initial multimap:" << std::endl;
printMultimap(wordCount);
// Removing a single element by key
std::string keyToRemove = "cherry";
wordCount.erase(keyToRemove);
std::cout << "After removing '" << keyToRemove << "':" << std::endl;
printMultimap(wordCount);
// Removing all elements with a specific key
keyToRemove = "banana";
auto removed = wordCount.erase(keyToRemove);
std::cout << "After removing all '" << keyToRemove << "' (removed " << removed << " elements):" << std::endl;
printMultimap(wordCount);
// Removing a single element by iterator
auto it = wordCount.find("apple");
if (it != wordCount.end()) {
wordCount.erase(it);
std::cout << "After removing one 'apple' entry:" << std::endl;
printMultimap(wordCount);
}
return 0;
}