c++ - manipulation - ¿Qué es exactamente std:: labs() para?
scale_x_discrete (1)
C ++ 11 fue cuando se agregaron std::labs y std::llabs . Esto fue parte de la sincronización parcial realizada con la biblioteca estándar de C ++ con la biblioteca estándar de C99.
Realmente no lo necesita en el código C ++, ya que tuvimos una long sobrecarga de std::abs desde siempre. Pero si tiene algún código C (que por pura coincidencia también compila con un compilador de C ++), y utiliza labs , puede compilarlo con un compilador de C ++ 11 y una biblioteca estándar.
En retrospectiva, hay un caso de uso marginalmente útil para estas funciones. Y eso es cuando un intento de usar std::abs es ambiguo. Por ejemplo:
template<typename T>
T run_func(T (&f)(T)) {
return f({});
}
Luego, tratando de llamar a run_func(std::abs); está mal formado. Necesitamos especificar explícitamente el argumento de la plantilla o convertir std::abs al tipo adecuado. Por otro lado, run_func(std::labs); No es ambiguo, y no demasiado detallado.
Aún así, no es demasiado útil.
Leí sobre la función std::abs() al navegar por cppreference .
En esa página también he visto una función std::labs() . Que tiene el mismo prototipo que una de las sobrecargas std::abs() (la de long ).
long abs( long n );
long labs( long n );
y
long long abs( long long n );
long long llabs( long long n );
Asi que,
- ¿Qué hace exactamente
std::labs()? - ¿Dónde y cuándo uso
std::labs()? - ¿Cuál es la diferencia entre
std::abs()ystd::labs()?