gpt4 book ai didi

c++ - 如何对 std::map 中的部分键进行二进制搜索?

转载 作者:太空宇宙 更新时间:2023-11-03 10:28:58 24 4
gpt4 key购买 nike

我有一张数据 map ;关键是 std::string。我想对其执行二进制搜索,但我不能只使用 std::map::find(),因为我将只提供 key 的一部分。

假设我有一个包含以下键的 map :

["abc"] -> ...
["efg"] -> ...
["ijk"] -> ...
["iik"] -> ...

我想搜索这个,假设只提供 "i",搜索应该返回:

["ijk"] -> ..., ["iik"] -> ...

这可能吗?我曾尝试使用迭代器执行此操作,但我失败了,因为我无法将它们视为索引。

注意:由于其他原因,我将数据保存在 map 中,所以我不想将其更改为不同的数据结构。

最佳答案

这是可能的,但您实际上不需要对数据进行二进制搜索。

您可以使用 lower_bound找到第一个元素,然后推进生成的迭代器,直到您的 key 不再符合您的条件,将它们存储在 <vector> 中或类似的容器将它们全部归还。

关于c++ - 如何对 std::map 中的部分键进行二进制搜索?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23121685/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com