operator==,!=,<,<=,>,>=,<=>(std::pair)
De cppreference.com
Definido en el archivo de encabezado <utility> | ||
(1) | ||
(hasta C++14) | ||
(desde C++14) | ||
(2) | ||
(hasta C++14) | ||
(desde C++14) (hasta C++20) | ||
(3) | ||
(hasta C++14) | ||
(desde C++14) (hasta C++20) | ||
(4) | ||
(hasta C++14) | ||
(desde C++14) (hasta C++20) | ||
(5) | ||
(hasta C++14) | ||
(desde C++14) (hasta C++20) | ||
(6) | ||
(hasta C++14) | ||
(desde C++14) (hasta C++20) | ||
(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
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
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 operator<=> no está definido si | (desde C++20) |
[editar]Parámetros
lhs, rhs | - | Los pares a comparar. |
[editar]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.[editar]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"}
[editar]Véase también
Compara lexicográficamente los valores de la tupla (plantilla de función) |