Как пропустить некоторые ключи с помощью итератора? - PullRequest
0 голосов
/ 06 июня 2019

Например, я добавил несколько ключей в БД, например,

<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() стоит дорого. Какой метод я должен использовать?

Этот метод пропуска сканирования похож на this

Я предпочитаю программировать как следующие строки:

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
}

...