2013-03-25 73 views
1

2個多重映射對象,我需要比較兩個多重映射對象,瞭解他們是否相等或不相比於C++

我知道通過使用std ::等於我們可以比較兩個矢量對象的平等,但有可能使用這個算法用於比較multimap對象嗎?

typedef std::multimap<std::string, std::string> HeaderMap; 
HeaderMap _map,_secMap; 


_map.insert(HeaderMap::value_type("A", "a")); 
_map.insert(HeaderMap::value_type("B", "b")); 

_secMap.insert(HeaderMap::value_type("A", "a")); 
_secMap.insert(HeaderMap::value_type("B", "b")); 



**std::equal(_map.begin(),_map.end(),_secMap.begin()); // is this true?** 

如果上面的代碼片斷是不正確的,我怎麼可以比較兩個多重映射對象?(我不螞蟻迭代對象和鍵進行比較和值逐一) 感謝

+0

您希望我們爲您運行您的代碼並告訴您結果? – Fiktik 2013-03-25 09:41:56

+0

可能的重複http://stackoverflow.com/questions/8559820/compare-two-multimaps-c – 2013-03-25 09:42:31

+0

FikTik:>不僅建議我一種方式,我用它來比較multimap objects.if他們的內容是相等的返回true否則返回flase。 – 2013-03-25 09:45:39

回答

2

您可以比較他們operator==

map_ == secMap_; 

,直到第一個不平等的發現這將在內部通過一個比較元素之一。沒有辦法避免這種情況。這是一個工作示例:

#include <map> 
#include <string> 
#include <iostream> 

int main() 
{ 
    typedef std::multimap<std::string, std::string> HeaderMap; 

    HeaderMap m1, m2, m3; 

    m1.insert(HeaderMap::value_type("A", "a")); 
    m1.insert(HeaderMap::value_type("B", "b")); 

    m2.insert(HeaderMap::value_type("A", "a")); 
    m2.insert(HeaderMap::value_type("B", "b")); 

    m3.insert(HeaderMap::value_type("A", "a")); 
    m3.insert(HeaderMap::value_type("B", "b")); 
    m3.insert(HeaderMap::value_type("C", "c")); 


    std::cout << std::boolalpha; 
    std::cout << (m1==m2) << " " << (m1==m3) << std::endl;  
} 

輸出:

真的假

記住,與領先的下劃線的名字被保留用於執行,所以你不應該使用它們。