【发布时间】:2014-03-15 02:51:49
【问题描述】:
我有一个排序向量数组,
向量
b[1000009];
现在我必须在 b[factor] 行中搜索 x 和 y 之间的范围。
“因子”、“x”和“y”都是整数。
我使用了以下方法:
int lb,ub;
if(b[factor][0]>=x){lb=0;}
else
{
lb=upper_bound(b[factor].begin(),b[factor].end(),x)-b[factor].begin();
while(b[factor][lb-1]>=x)lb--;
}
if(b[factor][sz2-1]<=y)
{
ub=sz2-1;
}
else {
ub=lower_bound(b[factor].begin(),b[factor].end(),y)-b[factor].begin();
while(b[factor][ub]>y)ub--;
}
但是这种方法并不是一直都能给出正确的答案。除此之外,我还想使用一些比较器功能来实现相同的目的。这是我第一次使用 lower_bound() 和 upper_bound()。所以请在这里告诉我如何实现比较器功能。
【问题讨论】:
-
你的向量排序了吗?
-
@vaughn- 是的,它们已经排序了,我忘了说。
-
你能举一个你得到错误答案的例子吗?
-
我有一个 146 行的程序,我在其中使用了这个代码段,当我运行它时,它给了我运行时错误。当我通过循环暴力检查替换它时,它运行良好。所以这里一定有什么错误?
-
什么是有效的蛮力等效项?
标签: c++ stl lower-bound