【发布时间】:2021-10-09 19:07:13
【问题描述】:
我想知道为什么std::map::erase 有一个重载,它返回一个int,它代表被删除的元素数量;所以只要元素是唯一的,那么数字就是1 或0。在这种情况下,为什么它不返回 bool 而不是 int?
std::map<std::string, std::size_t> containers{
{"map", 1}, {"set", 10}, {"map", 5}, {"vector", 4}, {"array", 7}
};
for(auto const& p : containers)
std::cout << p.first << " " << p.second << '\n';
std::cout << containers.erase("map") << '\n'; // 1
std::cout << containers.erase("map") << '\n'; // 0
for(auto const& p : containers)
std::cout << p.first << " " << p.second << '\n';
【问题讨论】:
-
这可能是为了与
std::multimap保持一致,erase方法一次可以删除多个元素。