下面是我写的代码,它显示错误(我们不能使用end()-1和itr+1操作)。我的目的是一对一对地看完布景。我想要得到{1 2}{2 3}。
for(itr=X.begin();itr!=X.end()-1;itr++)
{
int l1,l2;
l1 = *(itr+1) - *itr;
for(itr1=Y.begin();itr1!=Y.end()+1;itr1++)
{
l2 = *(itr1+1) - *itr1;
int l = min(l1,l2);
int num = (l*l)/(a*a);
count += num;
}
}
集迭代器不支持+
或-
。这似乎是做你想做的最简单的方法
std::set<int> X = ...;
auto i = X.begin();
if (i != X.end())
{
auto j = ++i;
while (j != X.end())
{
int l1 = *j - *i;
...
// similar code for Y loop
...
++i;
++j;
}
}
它与您的代码基本相同,但在一个循环中使用了两个相邻的迭代器i
和j
,以避免不得不使用+
和-
。