operator==,!=,<,<=,>,>=,<=>(std::multimap)
De cppreference.com
Definido en el archivo de encabezado <map>
|
||
template< class Key, class T, class Compare, class Alloc > bool operator==( const std::multimap<Key, T, Compare, Alloc>& lhs, |
(1) | |
template< class Key, class T, class Compare, class Alloc > bool operator!=( const std::multimap<Key, T, Compare, Alloc>& lhs, |
(2) | (hasta C++20) |
template< class Key, class T, class Compare, class Alloc > bool operator<( const std::multimap<Key, T, Compare, Alloc>& lhs, |
(3) | (hasta C++20) |
template< class Key, class T, class Compare, class Alloc > bool operator<=( const std::multimap<Key, T, Compare, Alloc>& lhs, |
(4) | (hasta C++20) |
template< class Key, class T, class Compare, class Alloc > bool operator>( const std::multimap<Key, T, Compare, Alloc>& lhs, |
(5) | (hasta C++20) |
template< class Key, class T, class Compare, class Alloc > bool operator>=( const std::multimap<Key, T, Compare, Alloc>& lhs, |
(6) | (hasta C++20) |
template< class Key, class T, class Compare, class Alloc > /* véase más abajo */ operator<=>( const std::multimap<Key, T, Compare, Alloc>& lhs, |
(7) | (desde C++20) |
Compara el contenido de dos objetos multimap
.
1-2) Comprueba el contenido de
lhs
y rhs
es igual; es decir, tienen el mismo número de elementos y cada elemento en lhs
se compara igual con el elemento en rhs
en la misma posición.3-6) Compara el contenido de
lhs
y rhs
léxicográficamente. La comparación se realiza por una función equivalente a std::lexicographical_compare. Esta comparación ignora el orden Compare de multimap
.7) Compara el contenido de
lhs
y rhs
léxicográficamente. La comparación se realiza como si se llamara a std::lexicographical_compare_three_way en dos objetos multimap
con un objeto función realizando la comparación de tres vías sintetizada (véase más abajo). El tipo de retorno es el mismo que el tipo del resultado de la comparación de tres vías sintetizada. Esta comparación ignora el orden Compare de multimap
.
Dados dos l-valores const E, lhs
y rhs
como los operadores del lado izquierdo y del lado derecho, respectivamente (donde E
es std::pair<const Key, T>), la comparación de tres vías sintetizada se define como:
- si std::three_way_comparable_with<E, E> se satisface, es equivalente a lhs <=> rhs;
- de lo contrario, si comparar dos l-valores const E por el operator< está bien formado y el tipo del resultado satisface a
boolean-testable
, es equivalente a
lhs < rhs ? std::weak_ordering::less : rhs < lhs ? std::weak_ordering::greater : std::weak_ordering::equivalent
- de lo contrario, la comparación de tres vías sintetizada no se define, y operator<=> no participa en la resolución de sobrecarga.
three_way_comparable_with
o boolean-testable
se satisface pero no se modela, u operator< se utiliza pero E
y <
no establecen un orden total.Contenido |
[editar] Parámetros
lhs, rhs | - | Objetos multimap cuyo contenido hay que comparar.
|
-T, Key debe satisfacer los requisitos de EqualityComparable para poder usar las sobrecargas (1-2).
| ||
-Key debe satisfacer los requisitos de LessThanComparable para poder usar las sobrecargas (3-6). La relación de orden debe establecer un orden total.
|
[editar] Valor de retorno
1) true el contenido de los objetos
multimap
son iguales; de lo contrario, false.2) true el contenido de los objetos
multimap
no son iguales; de lo contrario, false.3) true el contenido de los/las
lhs
es léxicográficamente menor que el contenido de rhs
; de lo contrario, false.4) true el contenido de los/las
lhs
es léxicográficamente menor que o igual que el contenido de rhs
; de lo contrario, false.5) true el contenido de los/las
lhs
es léxicográficamente mayor que el contenido de rhs
; de lo contrario, false.6) true el contenido de los/las
lhs
es léxicográficamente mayor que o igual que el contenido de rhs
; de lo contrario, false.7) El orden relativo del primer par de elementos no equivalentes en
lhs
y rhs
, si existen tales elementos; de lo contrario, lhs.size() <=> rhs.size().[editar] Complejidad
1-2) Constante si
lhs
y rhs
son de diferente tamaño; de lo contrario, lineal de acuerdo al tamaño del multimap
.3-7) Lineal de acuerdo al tamaño del
multimap
.[editar] Ejemplo
Ejecuta este código
#include <algorithm> #include <iostream> #include <map> int main() { std::multimap<int, char> alice{{1, 'a'}, {2, 'b'}, {3, 'c'}}; std::multimap<int, char> bob{{7, 'Z'}, {8, 'Y'}, {9, 'X'}, {10, 'W'}}; std::multimap<int, char> eve{{1, 'a'}, {2, 'b'}, {3, 'c'}}; std::cout << std::boolalpha; // Comparar dos contenedores desiguales std::cout << "alice == bob devuelve " << (alice == bob) << '\n'; std::cout << "alice != bob devuelve " << (alice != bob) << '\n'; std::cout << "alice < bob devuelve " << (alice < bob) << '\n'; std::cout << "alice <= bob devuelve " << (alice <= bob) << '\n'; std::cout << "alice > bob devuelve " << (alice > bob) << '\n'; std::cout << "alice >= bob devuelve " << (alice >= bob) << '\n'; std::cout << '\n'; // Comparar dos contenedores desiguales std::cout << "alice == eve devuelve " << (alice == eve) << '\n'; std::cout << "alice != eve devuelve " << (alice != eve) << '\n'; std::cout << "alice < eve devuelve " << (alice < eve) << '\n'; std::cout << "alice <= eve devuelve " << (alice <= eve) << '\n'; std::cout << "alice > eve devuelve " << (alice > eve) << '\n'; std::cout << "alice >= eve devuelve " << (alice >= eve) << '\n'; }
Salida:
alice == bob devuelve false alice != bob devuelve true alice < bob devuelve true alice <= bob devuelve true alice > bob devuelve false alice >= bob devuelve false alice == eve devuelve true alice != eve devuelve false alice < eve devuelve false alice <= eve devuelve true alice > eve devuelve false alice >= eve devuelve true