#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;
}
Witam Używam powyższej funkcji do wprowadzania różnych konkursów kodowania, ale nigdy nie byłem w stanie zrozumieć, dlaczego jest ona szybka. Znam tę logikę, ale nie znam pojęcia jej trwałości. Na przykład, co to jest ta linia robi "#define getcx getchar_unlocked". Także ja nie znam żadnego szybki funkcję wyjścia więc jest jakaś szybka funkcja wyjścia równieżFunkcja szybkiego wprowadzania danych:
Oto kolejne pytanie dotyczące tego tematu: http://stackoverflow.com/questions/9052757/getchar-unlocked-vs-scanf-vs-cin –
Ponieważ nazwa funkcji sugeruje, że nie jest bezpieczna dla wątków, bezpieczna dla wątków funkcja wejściowa wykorzystująca mechanizm synchronizacji może mieć znaczny narzut wydajności w porównaniu z tym. –
Sądząc po okropnym, icky formatowaniu kodu, domyślam się, że pisanie było szybsze niż poprawnie napisana funkcja ... dlatego jest "szybka". – Lundin