並べ替えられたベクトルの配列がありますが、
vector< int> b[1000009];
ここで、行 b[factor] で x と y の間の範囲を検索する必要があります。
'factor'、'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( ) を使用するのはこれが初めてです。そこで、ここでコンパレータ機能を実装する方法を教えてください。