operator==,!=,<,<=,>,>=,<=>(std::pair)
De cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| Definido en el archivo de encabezado <utility>
|
||
| (1) | ||
template< class T1, class T2 > bool operator==( const std::pair<T1,T2>& lhs, const std::pair<T1,T2>& rhs ); |
(hasta C++14) | |
template< class T1, class T2 > constexpr bool operator==( const std::pair<T1,T2>& lhs, const std::pair<T1,T2>& rhs ); |
(desde C++14) | |
| (2) | ||
template< class T1, class T2 > bool operator!=( const std::pair<T1,T2>& lhs, const std::pair<T1,T2>& rhs ); |
(hasta C++14) | |
template< class T1, class T2 > constexpr bool operator!=( const std::pair<T1,T2>& lhs, const std::pair<T1,T2>& rhs ); |
(desde C++14) (hasta C++20) |
|
| (3) | ||
template< class T1, class T2 > bool operator<( const std::pair<T1,T2>& lhs, const std::pair<T1,T2>& rhs ); |
(hasta C++14) | |
template< class T1, class T2 > constexpr bool operator<( const std::pair<T1,T2>& lhs, const std::pair<T1,T2>& rhs ); |
(desde C++14) (hasta C++20) |
|
| (4) | ||
template< class T1, class T2 > bool operator<=( const std::pair<T1,T2>& lhs, const std::pair<T1,T2>& rhs ); |
(hasta C++14) | |
template< class T1, class T2 > constexpr bool operator<=( const std::pair<T1,T2>& lhs, const std::pair<T1,T2>& rhs ); |
(desde C++14) (hasta C++20) |
|
| (5) | ||
template< class T1, class T2 > bool operator>( const std::pair<T1,T2>& lhs, const std::pair<T1,T2>& rhs ); |
(hasta C++14) | |
template< class T1, class T2 > constexpr bool operator>( const std::pair<T1,T2>& lhs, const std::pair<T1,T2>& rhs ); |
(desde C++14) (hasta C++20) |
|
| (6) | ||
template< class T1, class T2 > bool operator>=( const std::pair<T1,T2>& lhs, const std::pair<T1,T2>& rhs ); |
(hasta C++14) | |
template< class T1, class T2 > constexpr bool operator>=( const std::pair<T1,T2>& lhs, const std::pair<T1,T2>& rhs ); |
(desde C++14) (hasta C++20) |
|
template< class T1, class T2 > constexpr /* véase más abajo */ operator<=>( const std::pair<T1,T2>& lhs, const std::pair<T1,T2>& rhs ); |
(7) | (desde C++20) |
1-2) Comprueba si los elementos de lhs y rhs son iguales, es decir, compara
lhs.first con rhs.first y lhs.second con rhs.second.3-6) Compara
lhs y rhs lexicográficamente mediante el operador operator<, es decir, compara los primeros elementos y solo si son equivalentes, compara los segundos elementos.7) Compara
lhs and rhs lexicográficamente mediante la comparación de tres vías sintetizada (véase más abajo), es decir, compara los primeros elementos y solo si son equivalentes, compara los segundos elementos.El tipo de retorno es el tipo de categoría de comparación común del tipo resultado de la comparación de tres vías sintetizada en T1 y el de T2.
|
Los operadores |
(desde C++20) |
Comparación de tres vías sintetizadaDado un tipo objeto
lhs < rhs ? std::weak_ordering::less :
rhs < lhs ? std::weak_ordering::greater :
std::weak_ordering::equivalent
El comportamiento del operador |
(desde C++20) |
Parámetros
| lhs, rhs | - | Los pares a comparar. |
Valor de retorno
1)
true si lhs.first == rhs.first y lhs.second == rhs.second, de lo contrario false.2)
!(lhs == rhs).3) Si
lhs.first<rhs.first, devuelve true. De lo contrario, si rhs.first<lhs.first, devuelve false. De lo contrario, si lhs.second<rhs.second, devuelve true. De lo contrario, devuelve false.4)
!(rhs < lhs).5)
rhs < lhs.6)
!(lhs < rhs).7)
synth_three_way(lhs.first, rhs.first) si no es igual a 0, de lo contrario synth_three_way(lhs.second, rhs.second), donde synth_three_way es un objeto función de solo exposición que realiza la comparación de tres vías sintetizada.Ejemplo
Ya que el operador operator< se define para pares, los contenedores de pares se pueden ordenar.
Ejecuta este código
#include <iostream>
#include <iomanip>
#include <utility>
#include <vector>
#include <algorithm>
#include <string>
int main()
{
std::vector<std::pair<int, std::string>> v = { {2, "baz"},
{2, "bar"},
{1, "foo"} };
std::sort(v.begin(), v.end());
for(auto p: v) {
std::cout << "{" << p.first << ", " << std::quoted(p.second) << "}\n";
}
}
Salida:
{1, "foo"}
{2, "bar"}
{2, "baz"}
Véase también
| Compara lexicográficamente los valores de la tupla (plantilla de función) |