查看c ++中两个向量是否相等的最快方法是什么?
我试图找到最快的方法来查看任何行是否等于矩阵的任何列,因此逐个元素比较并在不相等时退出循环是不够的。
答案 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中重载。因此,您可以轻松地比较那些直接比较两个整数。
如您所述,要比较矩阵的行和列,请使用循环并直接按==
比较行和列。