题目:编写程序,定义一个作者及其作品的multimap。使用find在multimap中查找一个元素并用erase删除它。确保你的程序在元素不在map中时也能正常运行。
之前想用template,但是出了点Bug还不会解,所以就用了宏
#include <iostream>
#include <map>
#include <string>
using std::cout;
using std::endl;
using std::map;
using std::multimap;
using std::string;
#define CONTAINER_TYPE multimap<string, string>
CONTAINER_TYPE author_pieces = { {"b", "mulse"}, {"b", "apple"}, {"a", "aa"}, {"b", "bbb"}, {"c", "cc"}, {"c", "cc"}, {"d", ""}};
void find_and_erase(CONTAINER_TYPE& pieces, string author_to_be_erased)
{
auto iter = pieces.find(author_to_be_erased);
auto cnt = pieces.count(author_to_be_erased);
for (int i = cnt; i > 0; i--)
{
iter = pieces.erase(iter);
}
}
void print_container(CONTAINER_TYPE& pieces)
{
for (auto iter = pieces.begin(); iter != pieces.end(); iter++)
{
cout << iter->first << " : " << iter->second << endl;
}
}
int main()
{
cout << "Before find and erase: " << endl;
print_container(author_pieces);
cout << "After find and erase: " << endl;
find_and_erase(author_pieces, "b");
print_container(author_pieces);
return 0;
}