有一对<string,string =“”>如何查找map中的某些对的部分<string,string =“”>?</string,> </string,>

时间:2011-07-09 03:47:18

标签: c++ search stdmap std-pair

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

1 个答案:

答案 0 :(得分:3)

首先,如果您使用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. 假设你有 这样的检查,如何应用它 容器中的每个元素。
  3. 每个部分的解决方案:

    1. 您可以实现一个带stringpair的函数(取决于您选择的容器类型和存储元素),并检查它是否符合您的条件。您可以找到string::find_first_of等函数对此有用。 regex库可能更有帮助,但它们不是STL的一部分。
    2. 您可以使用find_if算法在容器的每个元素上应用此功能。