我正在使用地图来存储数据。地图有很大的数据。我想找到具有前缀的键,结果项数量的限制为50.我想使用最快的搜索方式,而不是遍历整个地图并检查,因为map已经是一个结构化的键值容器。
例如,如果我有一些对:
<"foo123", value>
<"foo234", value>
<"bar12", value>
<"foo456", value>
<"bar200", value>
如果我搜索“foo”,它会建议我
foo123, foo234, foo456.
答案 0 :(得分:5)
有两种方法可以想到:
第一个是名为Libgdx, how can I create a rectangle from coordinates?的特殊容器,C ++标准库中没有等效容器,但您应该能够轻松找到工作版本。
第二种方法只是使用std::map
中"foo"
之前的密钥"foo123"
排序的事实。使用upper_bound
或lower_bound
函数快速查找起始范围,然后使用线性搜索。