Quels sont les avantages d’utiliser ‘#include ‘ à la place de  » en C++ ?


Vous trouverez iostream plus efficace car vous n'avez pas besoin de spécifier des spécificateurs de format comme %s,%d,%f etc. pour prendre une entrée ou pour sortir une variable.
Vous faites simplement
cin>>a;
cout<

Mais dans cstdio u devrait écrire
If a is a string,
scanf("%s", a);
printf("%s",a);
et cela prend un peu plus de temps.


Il y a quelques pièges de performance potentiels avec cin/cout :

Par défaut,
cin/cout perdent du temps à se synchroniser avec les tampons stdio de la bibliothèque C, de sorte que vous pouvez librement entremêler les appels à
scanf/printf avec les opérations sur cin/cout
. Désactivez ceci avec
std::ios_base::sync_with_stdio
(
false
);
.
De nombreux tutoriels C++ vous disent d'écrire
cout
<
endl
au lieu de
cout << 'n&apos ; Mais endl est en fait plus lent car il force un flush, ce qui est généralement inutile. (Vous auriez besoin d'un flush si vous écriviez, par exemple, une barre de progression interactive, mais pas lorsque vous écrivez un million de lignes de données). Écrivez
'n'
au lieu de
endl
.Il y avait un bogue dans de très anciennes versions de GCC (avant 2004) qui ralentissait considérablement les iostreams C++. N'utilisez pas d'anciens compilateurs.


Évitez ces pièges, et cin/cout sera tout aussi rapide que
scanf/printf. Mes benchmarks indiquent que cin/coutis est en fait 5 % à 10 % plus rapide. C'est probablement parce que
scanf/printf doit interpréter son argument de chaîne de format au moment de l'exécution et encourir le surcoût des varargs pour les autres arguments, tandis que la résolution des surcharges pour cin/cout se fait entièrement au moment de la compilation. Dans tous les cas, la différence est suffisamment faible pour que vous n'ayez pas à vous soucier de l'une ou l'autre façon, puisque presque aucun code raisonnable n'effectue autant d'entrées/sorties pour que cette différence ait de l'importance.