2013-01-03 101 views
-1

我想使用模板類來比較兩個向量。將C++中的兩個向量與模板類相比較

vector<Msg> gExpMsg; 
vector<Msg> gRevcMsg; 

我必須使用template class;和使用memcmp比較2 vector。 你能指導我在代碼C++。

在此先感謝。

+1

你可以發佈你到目前爲止的代碼嗎?順便說一下,'memcpy()'副本,它不會比較。 – hmjd

+0

對不起.. memcpy ... memcmp – user1042979

+0

template > Msg Validate(Msg m1,Msg m2) { memcmp(); //我必須爲m1和m2做 } – user1042979

回答

0

如果你想使用memcmp,我建議要檢查這個網站: C++ reference - Memcmp

Otherwhise,你可以寫的方法在您的類消息的equals(MSG),並且,在一個循環中,運行的方法。

1

您可以使用STL等於或不匹配算法來比較兩個容器。在這些算法中,如果你願意,你可以給你自己的謂詞仿函數。下面是在這裏你可以找到示例代碼 mismatch algorithm sample

不匹配返回(在你的情況下,其向量)持有兩個容器之間的差異對值 下面的鏈接從樣品的一些片斷快速瀏覽

//find first mismatch 
pair<vector<int>::iterator,list<int>::iterator> values; 
values = mismatch (coll1.begin(), coll1.end(), //first range 
         coll2.begin()); //second range 
if (values.first == coll1.end()) 
    cout <<"no mismatch"<<endl;  
else 
    cout <<"first mismatch: "<<*values.first<<" and "<<*values.second<<endl; 

帶謂詞

values = mismatch (coll1.begin(), coll1.end(), //first range 
         col12. begin(), //second range 
         less_equal<int>()) //criterion 
if (values.first == coll1.end()) 
    cout <<"always less-or-equal"<<endl; 
else 
    cout <<"not less-or-equal: "<<*values.first<<" and "   
          <<*values.second<<endl;