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

Cel*_*anu 4 c++ arrays compare equals vector

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

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

sky*_*ack 5

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

它具有以下复杂性:

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

这就是您一直在寻找的东西。
请参阅文档了解更多详细信息。


正如评论中提到的,operator==and之间有一个微妙的区别std::equal:如果类型不同,前者不起作用(例如,std::vector<int>and std::vector<double>),后者则起作用。
我试图给出最通用的解决方案。
如果类型相同,当然operator==会像@Jarod42 提到的那样发挥作用。

  • @Jarod42 有一个微妙的区别:如果类型不同,`operator==` 不起作用,`std::equal` 却起作用。 (3认同)