【问题标题】:compare two vectors in c++ with template class将 C++ 中的两个向量与模板类进行比较
【发布时间】:2013-01-03 10:59:36
【问题描述】:

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

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

我必须使用 template class; 并使用 memcmp 比较 2 vector。 能否请您指导我编写 C++ 代码。

提前致谢。

【问题讨论】:

  • 你能发布你到目前为止的代码吗?顺便说一句,memcpy() 复制,它不比较。
  • 对不起..不是memcpy... memcmp
  • 模板 > Msg Validate(Msg m1, Msg m2) { memcmp(); // 我必须为 m1 和 m2 做 }

标签: c++ class templates vector memcpy


【解决方案1】:

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

mismatch 返回包含两个容器之间差异的对值(在您的情况下为向量) 这是示例中的一些 sn-p 供快速查看

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-03
    • 2020-02-08
    • 2021-12-29
    • 1970-01-01
    • 1970-01-01
    • 2014-04-01
    • 2013-11-10
    • 2021-06-02
    相关资源
    最近更新 更多