【发布时间】:2014-03-22 15:15:11
【问题描述】:
我是 C++ 的新手,我正在尝试使用 lower_bound 和 upper_bound 对向量进行排序和搜索。这行代码给我带来了奇怪的错误:
up = upper_bound(low, this->data.end(), name, [](const human & a, const string & b) {return (a.name < b) ? true : false;});
错误是没有匹配的函数调用类型为 <lambda at ... 的对象,这不是在这一行上触发的,而是在第 4104 行的算法库中。我很困惑,因为我在另一部分代码中使用了upper_bound工作正常。此外,当我将功能从 upper_bound 更改为 lower_bound 时,一切正常。
有人知道如何解决这个问题吗?
【问题讨论】:
-
请发布MCVE 以及完整的编译器错误,并使用代码格式化按钮来格式化您的代码。
-
不相关,但请记住表达式
a.name < b已经是布尔值true或false,因此不需要三元条件。 -
此链接将为您提供帮助:stackoverflow.com/questions/4268848/…