什么是std :: set :: equal_range?

时间:2018-02-18 20:31:52

标签: c++ stl

由于std::set不能包含重复元素并且始终排序,因此std::set::equal_range将始终返回包含none或1个元素的范围。从技术上讲,是的,那仍然是范围,但这个算法的目的是什么?对于std::set,似乎没必要。

3 个答案:

答案 0 :(得分:9)

我只猜测。但是,https://github.com/PHPMailer/PHPMailer,当您在模板中并且不想确定您是否正在使用find()或其他某个关联时,它具有一定的价值容器

基本上,它是为了保持一致性。该功能确实按照宣传的方式执行,只是如果您孤立地使用类似{{1}},那么它是否有问题。如果你确实想要开箱即用的半开放范围,它确实可以为你节省一个手动迭代器增量。 :P

答案 1 :(得分:8)

所有关联容器都支持equal_range,这意味着您可以编写接受setmultisetmapmultimap的通用代码会做正确的事。

答案 2 :(得分:0)

考虑使用std :: multiset。尽管界面几乎相同,但它可以包含更高长度的equal_ranges。