我存储在STD值之间的迭代::地图STL容器:两个迭代器
我发现在地图上的两个值,我想通过第一之间迭代到最后一个项目 - 但是< =运算符不落实,所以我不能做somethimng这样的:
void foobar(const DatedRecordset& recs, const double startstamp, const double endtstamp)
{
DatedRecordsetConstIter start_iter = recs.lower_bound(startstamp), end_iter = recs.lower_bound(endtstamp);
// Can't do this .... (<= not defined)
//for (DatedRecordsetConstIter cit = start_iter; cit <= end_iter; cit++)
/So have to resort to a hack like this:
for (DatedRecordsetConstIter cit = start_iter; cit != recs.end(); cit++) {
if ((*cit).first <= (*end_iter).first){
//do something;
}
else
break;
}
}
}
有两个已知的迭代器之间迭代的一个更优雅的方式?
您可以使用cit!=(end_iter + 1)。 – 2011-01-28 20:35:16
这不适用于`std :: map :: iterator`;它没有定义“+”运算符。尽管假设'end_iter'不是`recs.end()`,但是使用'boost :: next`之类的东西(尽管如此,原始规范在这种情况下将是无效的)。 –
2011-01-28 20:37:46
@Jeremiah Willcock:你说的对,但`++`操作符可以做'new_end_iter = end_iter ++`的技巧。 – 2011-01-28 21:05:26