将c ++中的两个向量与模板类进行比较

时间:2013-01-03 10:59:37

标签: c++ class templates vector memcpy

我想使用模板类比较两个向量。

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

我必须使用template class;并使用vector比较2 memcmp。 你能用C ++代码指导我吗。

先谢谢。

2 个答案:

答案 0 :(得分:1)

您可以使用STL等于或不匹配算法来比较两个容器。在这些算法中,您可以根据需要提供自己的谓词仿函数。以下是您可以找到示例代码的链接 mismatch algorithm sample

mismatch返回保存两个容器之间差异的对值(在您的情况下是其向量) 以下是样本中的一些片段,用于快速查看

//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;

答案 1 :(得分:0)

如果你想使用memcmp,我建议你查看这个网站:  C++ reference - Memcmp

另外,您可以在类Msg中编写方法equals(Msg),并在循环内运行该方法。