wątpliwości z getchar_unlocked() (prośba o wyjaśnienie)

0

Mam na przykład taki kod:

char x;
cin >> x; 

Tylko, że potrzeba mi szybszego wczytywania danych. Po przeszukaniu internetu, okazuje się, że szybkim sposobem jest właśnie getchar_unlocked.
Z tym, że różne źródła różnie podają...
I tu się pojawia problem.
Na jednej stronie stwierdzili coś takiego:

 char c;
//wczytanie jednego znaku i zapisanie go w zmiennej c
c = getc_unlocked(stdin);
 
//lub
c = getchar_unlocked();

na innej znowu, że getchar_unlocked jest związany z intami.

Chyba nie wystarczy zamienić:

char x;
cin >> x; 

na

char x;
x= getchar_unlocked(); 

(oczywiście po dodaniu biblioteki).
Kompilacja przebiega pomyślnie ale program nie daje żadnego wyniku.
Proszę o pomoc.

1

funkcja getchar_unlocked nie jest standardową funkcją C, więc może działać, albo moze działać częściowo, albo może nie działać w ogóle. Ja proponowałbym poprawę algorytmu a nie szukanie takich wątpliwych przyśpieszeń, bo wcale przyspieszyć nie muszą.

0

Na serwisach jak SPOJ czy inne sprawdzaczki strumienie są zbyt wolne, lekko pomaga ios_base::sync_with_stdio(0) (wyłącza synchronizację strumieni z studio), ale najlepiej korzystać ze startych, dobrych funkcji scanf, fscanf itd. One powinny w zupełności wystarczyć. Czy możesz powiedzieć, do czego tak na prawdę jest Ci to potrzebne? Zawsze można napisać własne funkcje do wczytywania danych, ale nie będzie to ogromny skok wydajności.

1 użytkowników online, w tym zalogowanych: 0, gości: 1