scale_x_discrete manipulation ggtitle ggplot change c++ c c++11 prototype math-functions

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() y std::labs() ?