-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
,它已经使用宏定义。
如果您需要任何澄清,请询问。
不,它不需要一个迭代器分配给整体变量。仔细阅读,并匹配括号。 – StoryTeller
你的代码不能编译 - 看起来你缺少一些typedefs以及通常的include和main()函数。 –