在upper_bound二进制谓词中,迭代器值作为第二个参数传递,而lower_bound迭代器值作为第一个参数传递.
这是什么原因?如果我在编写自己的二元谓词时记住这个细节,那有关系吗?
注意我的参考是www.cplusplus.com(我被告知可能不是最好的参考),我通过查看stl随附的库中的实现来确认它VC++.
这是故意的.原因是你可以为两种算法使用相同的比较器.考虑一下说明.lower_bound:
返回指向范围[first,last]中不小于(即大于或等于)值的第一个元素的迭代器.
并且upper_bound:
返回指向范围[first,last]中第一个元素的迭代器,该元素大于 value.
考虑一下标准比较器<.为了实现这两种算法,只<需要!(elem < value)一个和value < elem另一个.论证顺序的倒置直接来自于此.
这不应该影响您实现Comparator的方式.