0
私はC++プログラムでlower_bound関数を実装しようとしていますが、問題は次にあります:ベクトルでうまく動作しますが、ペアのペアのベクトルを持つ場合、下限バイナリ検索を行うには
私はペアの1つのベクトルを持っていると私は最初のペアの最初のメンバーを検索したいと私たちは同じ値を持つ複数の値を持っている場合、私は、例えば、第二の値の最小を返すようにしたい:
ペアのベクトルが次のようになっているとします。
v = {(1,1),(2,1),(2,2),(2,3),(3,4),(5,6)};
値K = 2を検索していますが、ペアの2番目の値が1で1が最小であるため、位置1(配列が0の場合)を返したいとします。
どのように私は最も簡単な方法でこれを実装することができ、私はこれを実装しようとしたが、それはコンパイルに失敗し、ここに私のコードです:つまり
vector<pair<int,int> >a,b;
void solve() {
sort(b.begin(), b.end());
sort(a.begin(), a.end());
vector<int>::iterator it;
for(int i=0;i<a.size();i++) {
ll zero=0;
int to_search=max(zero, k-a[i].first);
it=lower_bound(b.begin(), b.end(), to_search);
int position=it-b.begin();
if(position==b.size()) continue;
answer=min(answer, a[i].second+b[position].second);
}
}
私は最初の値を検索するんだけど、もしそこにその値の方が2番目の要素が最も小さいものを返します。
ありがとうございます。ペアの
を使用することができますので、あなたはどのようなエラーが出るのですか? – user463035818