You need to enable JavaScript to run this app. C++使用自定义比较器调用upper_bound时出现类型绑定错误如何解决
优惠活动
大模型
产品
解决方案
定价
更多

C++使用自定义比较器调用upper_bound时出现类型绑定错误如何解决

错误原因

std::upper_bound 对自定义比较器的调用逻辑为:针对传入的查找值val和区间内的元素elem,会执行comp(val, elem)判断查找位置。
你定义的compareInterval比较器要求两个入参均为const vector<int>&类型,但调用upper_bound时传入的查找值是int类型的i,int类型无法绑定到const vector<int>&类型的形参,直接触发类型不匹配的编译报错。
而前面调用sort时没有报错,是因为sort比较的是区间内的两个vector<int>元素,两个参数都和比较器的形参类型匹配。

修复方案

最简单的修复方式是将查找值包装为符合比较器要求的vector类型,将upper_bound调用行修改为:

auto low = upper_bound(bookings.begin(), bookings.end(), vector<int>{i}, compareInterval);

也可以额外重载支持int和vector对比的比较器,不过对于当前场景上述修改已经能满足需求。

内容的提问来源于stack exchange,提问作者user6549804

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 13:24:06