例如,我向 DB 添加了几个键,例如,
<1 + 2>
<1 + 3>
<2 + 1>
<2 + 4>
<3 + 2>
首先Seek()
到 <1, 2> 然后Next()
到 <1, 3> 之后,我想跳过键 <2, 1> 和 <2, 4> (它们的前缀都是2
)并将迭代器移动到 <3, 2>无需新seek
操作。使用新Seek()
操作是出乎意料的,因为它Seek()
是昂贵的。我应该使用哪种方法?
这种跳过扫描方法与此类似
我更喜欢像下面这样编程:
DBIter* it = NewDBIterator(...);
set = {key1, key2, key3, ...};
Iterator key_iter = set.begin();
for (it->SeekToFirst(); it->Valid() && key_iter != set.end(); it->SkipToNext(*key_iter), ++ key_iter) {
// do something
}