gpt4 book ai didi

C++ STL - 为什么使用 !(w < *i) 而不是 (w==*i)

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:21 27 4
gpt4 key购买 nike

vector<Widget> vw;
// populate vw
sort(vw.begin(), vw.end());
Widget w;

vector<Widget>::iterator i = lower_bound(vw.begin(), vw.end(), w);

if ( (i != vw.end()) && !(w < *i) ) // Yes, it is correct!
// found w in vw

这是我的理解:

*i 从 lower_bound 的返回值总是不小于 w 的返回值。换句话说,w <= *i

问题来了,为什么不直接使用下面的条件进行校验呢?

if ( (i != vw.end()) && (w == *i) ) // why not use (w == *i)?
// found w in vw

谢谢

最佳答案

因为隐式接口(interface)<algorithm>用于排序,这类东西只需要 <要在数据类型上定义的运算符。如果他们使用 == ,他们会迫使开发人员也在自定义类型上实现它,以便从这些功能中受益。

换句话说,如果你做一个可排序的类型 Foo , 使用 <algorithm> 中定义的函数, 你只需要重载 <运营商。

关于C++ STL - 为什么使用 !(w < *i) 而不是 (w==*i),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5827752/

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