我将值存储在 std::map 中
我在 map 中找到两个值,并且我想在第一个值到最后一个值之间进行迭代 - 但是 <= 运算符没有实现,所以我不能做这样的事情:
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;
}
}
}
是否有更优雅的方式在两个已知迭代器之间进行迭代?
最佳答案
使用!=
而不是<=
它会做你想做的事。
void foobar(const DatedRecordset& recs, const double startstamp, const double endtstamp)
{
DatedRecordsetConstIter start_iter = recs.lower_bound(startstamp),
end_iter = recs.upper_bound(endtstamp);
for (DatedRecordsetConstIter cit = start_iter; cit != end_iter; ++cit) {
}
}
关于c++ - STL容器: iterating between two iterators,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4832692/