gpt4 book ai didi

c++ - 为什么 std::map::erase 返回 int 而不是 bool?

转载 作者:行者123 更新时间:2023-12-04 12:30:23 28 4
gpt4 key购买 nike

我想知道为什么 std::map::erase 有一个重载返回一个 int 代表被删除的元素的数量;所以只要元素是唯一的,那么数字就是 10。在这种情况下,为什么它不返回 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() 的内容,您的问题的答案就显而易见了返回。

该容器的 erase() 方法可能会返回 0,可能会返回 1,也可能会返回其他一些值。

拥有一个跨容器一致的接口(interface)允许实现模板和算法,这些模板和算法在任何一个容器中都能很好地工作,因为 erase() 的返回值,无论它来自 mapmultimap,意思完全一样。

附言无需查找,您应该能够很好地猜测 std::setstd::multiseterase() 方法返回。

关于c++ - 为什么 std::map::erase 返回 int 而不是 bool?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69509784/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com