什么是比较C ++中矢量的最快方法?

时间:2016-11-02 04:19:27

标签: c++ arrays vector compare equals

查看c ++中两个向量是否相等的最快方法是什么?

我试图找到最快的方法来查看任何行是否等于矩阵的任何列,因此逐个元素比较并在不相等时退出循环是不够的。

3 个答案:

答案 0 :(得分:3)

不要重新发明轮子。您可以使用<algorithm>中的std::equal

它具有以下复杂性:

  

如果InputIterator1和InputIterator2满足随机访问迭代器和last1的要求,则没有相应谓词的应用程序 - first1!= last2 - first2。否则,最多min(last1 - first1,last2 - first2)应用相应的谓词。

那就是你要找的东西 有关详细信息,请参阅文档。

正如评论中所提到的,operator==std::equal之间存在细微差别:如果类型不同,前者不起作用(例如,std::vector<int>std::vector<double>),后者确实起作用 我试图给出最通用的解决方案 如果类型相同,当然operator==就像魅力一样,mentioned by @Jarod42

答案 1 :(得分:2)

只需使用向量的operator ==

std::vector<int> v1{1, 2, 3, 4}, v2{1, 2, 3, 4};
bool are_equal = (v1 == v2);

答案 2 :(得分:0)

等式运算符(==)在C ++ Vector STL中重载。因此,您可以轻松地比较那些直接比较两个整数。

如您所述,要比较矩阵的行和列,请使用循环并直接按==比较行和列。