由于std::set
不能包含重复元素并且始终排序,因此std::set::equal_range
将始终返回包含none或1个元素的范围。从技术上讲,是的,那仍然是范围,但这个算法的目的是什么?对于std::set
,似乎没必要。
答案 0 :(得分:9)
我只猜测。但是,https://github.com/PHPMailer/PHPMailer,当您在模板中并且不想确定您是否正在使用find()
或其他某个关联时,它具有一定的价值容器
基本上,它是为了保持一致性。该功能确实按照宣传的方式执行,只是如果您孤立地使用与类似{{1}},那么它是否有问题。如果你确实想要开箱即用的半开放范围,它确实可以为你节省一个手动迭代器增量。 :P
答案 1 :(得分:8)
所有关联容器都支持equal_range
,这意味着您可以编写接受set
,multiset
,map
或multimap
的通用代码会做正确的事。
答案 2 :(得分:0)
考虑使用std :: multiset。尽管界面几乎相同,但它可以包含更高长度的equal_ranges。