Getchar_unlocked() VS scanf() VS cin

В чем разница между этими тремя функциями ввода в языке программирования. Они вводятся разными способами друг от друга?

1.getchar_unlocked()

 #define getcx getchar_unlocked

 inline void inp( int &n ) 
 {
    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;
  }   

2.scanf("%d",&n)

3.cin>>n

Какой из них занимает наименьшее время при вводе целых чисел?

Я использую эти заголовочные файлы в С++, где все 3 обходные операции выполняются в С++;

  #include<iostream>
  #include<vector>
  #include<set>
  #include<map>
  #include<queue>
  #include<stack>
  #include<string>
  #include<algorithm>
  #include<functional>
  #include<iomanip>
  #include<cstdio>
  #include<cmath>
  #include<cstring>
  #include<cstdlib>
  #include<cassert>

Ответ 1

Рассматриваются две точки.

  • getchar_unlocked устарел в Windows, потому что это небезопасная версия getchar().

  • Если коэффициент скорости слишком большой, попробуйте избежать getchar_unlocked.

Теперь, что касается скорости.

    getchar_unlocked > getchar

потому что проверка блокировки входного потока отсутствует в getchar_unlocked, что делает его небезопасным.

    getchar > scanf

потому что getchar читает один символ ввода, который является char, тогда как scanf может читать большинство примитивных типов, доступных в c.

    scanf > cin (>> operator)

потому что проверьте эту ссылку

Итак, наконец

getchar_unlocked > getchar > scanf > cin

Ответ 2

У меня была проблема с кодеком, который должен был ввести много целых чисел abd, обнаруживших, что char_unlocked() быстрее, чем scanf, который быстрее, чем cin