我们有一对字符串,例如这样的一对Accept-Language : RU ,
,我们通过映射搜索,例如 http 请求标头。我们只需要知道 map 中是否存在这样的对 - 一个布尔值。如何进行软搜索意味着我们不需要找到完全相同的配对,但配对Accept-Language : ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
对我们来说也是有效的配对,如果存在这样的配对,我们可以认为我们已经发现我们的地图包含我们的配对。如何在 C++ 中创建用于执行此类搜索的函数?
问问题
471 次
1 回答
3
首先,如果您使用 a map
,则不能有多个具有相同键的条目。例如,您不能同时拥有两者Accept-Language : RU
,Accept-Language : ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4
因为它们具有相同的键“Accept-Language”。也许在您的情况下,您应该使用成对的向量或多图。
接下来,您的问题由两部分组成:
- 如何检查某些元素(例如
string
或pair
)是否与模式匹配。 - 假设您有这样的检查,如何将其应用于容器中的每个元素。
各部分的解决方案:
- 您可以实现一个接受 a
string
或 a的函数pair
(取决于您选择的容器和存储元素的类型),并检查它是否符合您的条件。您可以找到诸如string::find_first_of之类的函数对此很有用。正则表达式库可能更有帮助,尽管它们不是 STL 的一部分。 - 您可以使用find_if算法将此函数应用于容器的每个元素。
于 2011-07-09T07:08:11.417 回答