operator==,!=,<,<=,>,>=,<=>(std::multiset)
Определено в заголовочном файле <set> | ||
|---|---|---|
template< class Key, class Compare, class Alloc >
bool operator==( const std::multiset<Key, Compare, Alloc>& lhs,
const std::multiset<Key, Compare, Alloc>& rhs );
| (1) | |
template< class Key, class Compare, class Alloc >
bool operator!=( const std::multiset<Key, Compare, Alloc>& lhs,
const std::multiset<Key, Compare, Alloc>& rhs );
| (2) | (до C++20) |
template< class Key, class Compare, class Alloc >
bool operator<( const std::multiset<Key, Compare, Alloc>& lhs,
const std::multiset<Key, Compare, Alloc>& rhs );
| (3) | (до C++20) |
template< class Key, class Compare, class Alloc >
bool operator<=( const std::multiset<Key, Compare, Alloc>& lhs,
const std::multiset<Key, Compare, Alloc>& rhs );
| (4) | (до C++20) |
template< class Key, class Compare, class Alloc >
bool operator>( const std::multiset<Key, Compare, Alloc>& lhs,
const std::multiset<Key, Compare, Alloc>& rhs );
| (5) | (до C++20) |
template< class Key, class Compare, class Alloc >
bool operator>=( const std::multiset<Key, Compare, Alloc>& lhs,
const std::multiset<Key, Compare, Alloc>& rhs );
| (6) | (до C++20) |
template< class Key, class Compare, class Alloc >
synth-three-way-result<T>
operator<=>( const std::multiset<Key, Compare, Alloc>& lhs,
const std::multiset<Key, Compare, Alloc>& rhs );
| (7) | (начиная с C++20) |
Сравнивает содержимое двух multiset.
lhs и rhs, то есть имеют ли они одинаковое количество элементов и равен ли каждый элемент в lhs соответствующему элементу в rhs, находящемуся на той же позиции.lhs и rhs. Сравнение выполняется функцией, эквивалентной std::lexicographical_compare. Это сравнение не учитывает порядок multiset, задаваемый Compare.lhs и rhs. Сравнение выполняется так, как если бы вызывался std::lexicographical_compare_three_way(lhs.begin(),lhs.end(),
rhs.begin(),rhs.end(), synth-three-way). Это сравнение не учитывает порядок multiset, задаваемый Compare. synth-three-way (то есть synth-three-way-result <T>).-
Tмоделируетthree_way_comparable. -
<определён для значений типа (возможно, с квалификатором const)T, а<является отношением полного порядка.
| Операторы | (начиная с C++20) |
Параметры
| lhs, rhs | - |
multiset, содержимое которых нужно сравнить |
-Key должен удовлетворять требованиям EqualityComparable для использования перегрузок (1,2). |
||
Возвращаемое значение
true, если содержимое multiset совпадает, иначе false.true, если содержимое multiset не совпадает, иначе false.true, если содержимое lhs лексикографически меньше содержимого rhs, иначе false.true, если содержимое lhs лексикографически меньше или равно содержимому rhs, иначе false.true, если содержимое lhs лексикографически больше содержимого rhs, иначе false.true, если содержимое lhs лексикографически больше или равно содержимому rhs, иначе false.lhs и rhs, если такие элементы есть, иначе lhs.size() <=> rhs.size().Сложность
lhs и rhs имеют разный размер, в противном случае линейная относительно размера multiset.multiset.Примечания
| Операторы сравнения определены через operator< типа элемента. | (до C++20) |
| Операторы сравнения определены через В частности, если сам элемент не предоставляет operator<=>, но неявно преобразуется к типу, допускающему трёхстороннее сравнение, вместо operator< будет использоваться это преобразование. | (начиная с C++20) |
Пример
#include <cassert>
#include <compare>
#include <set>
int main()
{
const std::multiset
a{1, 2, 3},
b{1, 2, 3},
c{7, 8, 9, 10};
assert
(""
"Compare equal containers:" &&
(a != b) == false &&
(a == b) == true &&
(a < b) == false &&
(a <= b) == true &&
(a > b) == false &&
(a >= b) == true &&
(a <=> b) != std::weak_ordering::less &&
(a <=> b) != std::weak_ordering::greater &&
(a <=> b) == std::weak_ordering::equivalent &&
(a <=> b) >= 0 &&
(a <=> b) <= 0 &&
(a <=> b) == 0 &&
"Compare non equal containers:" &&
(a != c) == true &&
(a == c) == false &&
(a < c) == true &&
(a <= c) == true &&
(a > c) == false &&
(a >= c) == false &&
(a <=> c) == std::weak_ordering::less &&
(a <=> c) != std::weak_ordering::equivalent &&
(a <=> c) != std::weak_ordering::greater &&
(a <=> c) < 0 &&
(a <=> c) != 0 &&
(a <=> c) <= 0 &&
"");
}
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Применяется к | Опубликованное поведение | Корректное поведение |
|---|---|---|---|
| LWG 3431 | C++20 |
operator<=> не требовал, чтобы Tмоделировал three_way_comparable | требует |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/multiset/operator_cmp