【发布时间】:2015-08-13 21:11:13
【问题描述】:
我正在使用地图来存储数据。该地图具有非常大的数据。我想找到具有前缀的键,结果项的数量限制为 50。我想使用最快的方式进行搜索,而不是遍历整个地图并检查,因为地图已经是结构化的键值容器。
例如,如果我有一些对:
<"foo123", value>
<"foo234", value>
<"bar12", value>
<"foo456", value>
<"bar200", value>
如果我搜索“foo”,它会为我提供建议
foo123, foo234, foo456.
【问题讨论】:
-
您可以使用
std::find_if()并提供您自己的函数来检查前缀。 -
@πάντα ῥεῖ 这是线性时间,在这种情况下完全没有必要。
-
我在问之前研究了你上面提供的问题。我看到 lower_bound 返回找到键的第一个迭代器。你能指导我如何找到下一个。非常感谢!
-
找到迭代器后,您可以简单地递增它,直到它不再与前缀匹配或 50 遍。但是,我建议您关闭这个问题。将来,如果有一个与您自己的问题非常相似的问题,也许您应该参考它,并解释它与您遇到的问题之间的差异是什么。
标签: c++ dictionary