不要重新发明轮子。您可以使用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 提到的那样发挥作用。