std::sort
использует operator <
по умолчанию для сортировки.Так как std::vector
перегружен operator <
, он использует это.std::vector::operator <
выполняет лексикографическое сравнение, означающее, что он возвращает вектор с первым меньшим элементом.Это означает, что {1, 1, 2}
меньше {1, 1, 3}
, поскольку 2
меньше 3
.Если векторы имеют разную длину, но меньший имеет те же элементы, что и больший, то возвращается меньший.Это означает, что
int main()
{
std::vector a{5, 1}, b{10};
std::cout << (a < b);
}
Печатает 1
, поскольку 5
меньше 10
.
int main()
{
std::vector a{5, 10}, b{5};
std::cout << (a < b);
}
Печатает 0
, поскольку a
больше b
но они имеют один и тот же общий элемент.