Если у вас есть возможность определить, что два диапазона
точно такое же количество элементов, std::equal
подойдет. В
практика, это не так часто для меня,
и большинство из моих использований std::equal
на самом деле
определение, является ли один диапазон префиксом другого.
Для реальных сравнений я нашел std::lexicographical_compare
чтобы быть более полезным, хотя отношения, которые это предполагает
порядка, а не эквивалентности. Для эквивалентности, вы можете применить его
дважды, например
!lexicographical_compare(a.begin(), a.end(), b.begin(), b.end())
&& !lexicographical_compare(b.begin(), b.end(), a.begin(), a.end())
но это в значительной степени означает сравнение элементов дважды (если
есть разница в самом начале).