2011-07-09 40 views
1

我們有一對字符串,例如這樣的對Accept-Language : RU ,,我們搜索通過地圖,例如http請求標頭。我們所需要知道的是,在地圖中是否存在這樣的對 - 一個布爾值。如何做軟搜索意味着我們不需要找到完全相同的配對,但像Accept-Language : ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4這樣的配對對我們來說也是一對有效的配對,如果存在,我們可以認爲我們發現我們的地圖包含我們的配對。如何使用C++執行這樣的搜索功能?擁有一對<string,string>如何查找map中的某個對的一部分<string,string>?

+1

關鍵字:正則表達式。 – Xeo

回答

3

首先,如果您使用的是map,則不能使用同一個鍵具有多個條目。例如。您不能同時擁有Accept-Language : RUAccept-Language : ru-RU,ru;q=0.8,en-US;q=0.6,en;q=0.4,因爲它們具有相同的鍵「Accept-Language」。也許在你的情況下,你應該使用一個對的向量,或一個multimap。

接下來,你的問題由兩個部分組成:

  1. 如何檢查,是否一些元素(如stringpair) 一個模式相匹配。
  2. 假設您有 這樣的支票,如何將它應用到 容器中的每個元素。

每個部分的解決方案:

  1. 您可以實現一個功能,需要一個string,或pair(取決於容器的類型和所選擇存儲元件),並檢查它是否符合您的標準。您可以找到諸如string::find_first_of之類的功能,以便對此有用。 regex庫可能會更有幫助,雖然它們不是STL的一部分。
  2. 您可以使用find_if算法將此函數應用於容器的每個元素。
相關問題