-1
私は最近C++ STLの使用を開始しましたが、今日は自分のコードでlower_bound
関数を試しました。しかし残念ながら、私はエラーを得た:lower_bound(C++ STLより)の結果を整数型変数に代入できますか?
cannot convert '__gnu_cxx::__normal_iterator<long long int*, std::vector<long long int> >' to 'long long int' in assignment|
は私のコード
lli n;
cin >> n;
lli k;
cin >> k;
vector<lli> v;
lli store;
for(lli i = 0;i < n;i++)
{
cin >> store;
if(store < k)
v.push_back(store);
}
sort(v.begin(),v.end());
lli paths = 0;
for(lli i = (lli)v.size()-1;i >= 0;i--)
paths = paths + lower_bound(v.begin(),v.begin()+i-1,v[i]-k);
cout << paths;
です
https://github.com/sampritipanda/IOI_Repository/blob/master/ZCO/2013/CHEWING.cppは、ラインを介して、整数型の変数に割り当てられるLOWER_BOUNDの結果を使用する:
int j = lower_bound(gum.begin() + i, gum.end(), K - gum[i]) - (gum.begin() + i);
私が間違っているところでアドバイスをしてください。
注:lli
は、すでにマクロを使用して定義されているlong long int
の略です。
説明が必要な場合は、質問してください。
ありません、それは積分変数にイテレータを割り当てられません:
は、あなたの場合に行うことができます
std::vector<int>::difference_type
最高です戻ります。注意深く読んで、かっこに合ってください。 – StoryTeller
コードはコンパイルされません。通常のインクルードとmain()関数だけでなく、いくつかのtypedefが欠けているようです。 –