先创建一个函数,用于检查前缀
bool isPrefix(const std::string & pfx , const std::string & str){ auto p=pfx.c_str(); auto s=str.c_str(); int len = pfx.size(); for(int i=0;i<len;i++){ if(p[i]!=s[i]) return false; } return true; }
开始搜索(搜索到的结果插入到链表res中)
leveldb::Iterator * it = classifies->NewIterator(leveldb::ReadOptions());//创建迭代器 for(it->Seek(prefix)/*定位前缀*/; it->Valid(); it->Next()) { auto k = it->key().ToString();//key auto v = it->value().ToString();//value if(!isPrefix(prefix,k)) break;//前缀不匹配,说明搜索完了 res.push_back(v);//插入链表 } delete it;