在C ++地图中搜索带有前缀的所有键

时间:2015-05-31 09:49:55

标签: c++ dictionary

我正在使用地图来存储数据。地图有很大的数据。我想找到具有前缀的键,结果项数量的限制为50.我想使用最快的搜索方式,而不是遍历整个地图并检查,因为map已经是一个结构化的键值容器。

例如,如果我有一些对:

<"foo123", value>

<"foo234", value>

<"bar12", value>

<"foo456", value> 

<"bar200", value>

如果我搜索“foo”,它会建议我

foo123, foo234, foo456. 

1 个答案:

答案 0 :(得分:5)

有两种方法可以想到:

  • 第一个是名为Libgdx, how can I create a rectangle from coordinates?的特殊容器,C ++标准库中没有等效容器,但您应该能够轻松找到工作版本。

  • 第二种方法只是使用std::map"foo"之前的密钥"foo123"排序的事实。使用upper_boundlower_bound函数快速查找起始范围,然后使用线性搜索。