【问题标题】:Having a pair<string, string> how to find if its part of some pair in map<string, string>?有一个pair<string, string> 如何在map<string, string> 中找到它的一部分?
【发布时间】:2011-10-01 17:36:06
【问题描述】:

我们有一对字符串,例如 Accept-Language : RU , 这样的一对字符串,我们通过映射搜索,例如 http 请求标头。我们只需要知道 map 中是否存在这样的对 - 一个布尔值。如何进行软搜索意味着我们不需要找到完全相同的对,但像 Accept-Language : ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4 这样的对对我们来说也是有效的对,如果存在,我们可以认为我们已经发现我们的地图包含我们的对。如何在 C++ 中创建用于执行此类搜索的函数?

【问题讨论】:

    标签: c++ search stdmap std-pair


    【解决方案1】:

    首先,如果您使用map,则不能有多个具有相同键的条目。例如。您不能同时拥有Accept-Language : RUAccept-Language : ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,因为它们具有相同的“Accept-Language”键。也许在您的情况下,您应该使用成对向量或多图。

    接下来,您的问题由两部分组成:

    1. 如何检查,是否某个元素(如stringpair) 匹配一个模式。
    2. 假设你有 这样的检查,如何应用到 容器中的每个元素。

    各部分的解决方案:

    1. 您可以实现一个采用stringpair 的函数(取决于您选择的容器和存储元素的类型),并检查它是否符合您的条件。您可以找到诸如string::find_first_of 之类的函数来解决这个问题。 regex 库可能会更有帮助,尽管它们不是 STL 的一部分。
    2. 您可以使用find_if 算法将此函数应用于容器的每个元素。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-18
      • 2020-08-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多