#define getcx getchar_unlocked
inline void inp(int &n)//fast input function
{
n=0;
int ch=getcx();int sign=1;
while(ch < '0' || ch > '9'){if(ch=='-')sign=-1; ch=getcx();}
while( ch >= '0' && ch <= '9')
n = (n<<3)+(n<<1) + ch-'0', ch=getcx();
n=n*sign;
}
Hola He estado utilizando la función anterior para la entrada en varios concursos de codificación, pero nunca pude entender por qué es rápido. Conozco la lógica, pero no conozco el concepto de su solidez. Por ejemplo, ¿qué está haciendo esta línea? #define getcx getchar_unlocked ". Además no conozco a ninguna función de salida rápida todo, hay una función de salida rápida tambiénFunción de salida de entrada rápida
Aquí hay otra pregunta sobre este tema: http://stackoverflow.com/questions/9052757/getchar-unlocked-vs-scanf-vs-cin –
Como el nombre de la función sugiere que no es seguro para subprocesos, un subproceso seguro la función de entrada que utiliza un mecanismo de sincronización puede tener una sobrecarga de rendimiento significativa frente a esta. –
A juzgar por el formato de código horriblemente complicado, supongo que fue más rápido para escribir que una función escrita correctamente ... por lo tanto, es "rápido". – Lundin