我存儲在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