Ich habe gerade gelernt, wie man heute ostream_iterator
verwendet, aber ich weiß nicht, ob dies im Vergleich zu den normalen for-Schleife Weg effizient ist. HierIst ostream_iterator effizient?
ist der Code:
//The first one
vector<int> v = {1, 2, 3, 4, 5};
ostream_iterator<int> osit(cout, " ");
copy(v.begin(), v.end(), osit);
Und
//The second one
vector<int> v = {1, 2, 3, 4, 5};
for (int i : v) cout << i << " ";
Welches ist effizienter?
Vielen Dank im Voraus!
Die Verwendung von Stream ist meistens ineffizient, besonders wenn Sie mit dem zugrundeliegenden System interagieren ('cout' /' cin'/'fstream'/...), so dass Sie zwischen beiden Möglichkeiten keinen Unterschied sehen Die "Effizienz" der Methoden wird durch die Ineffizienz des Stroms verdeckt. – Holt
Die forwarded-for-Schleife erfordert etwas weniger Typisierung. –
Definieren Sie "effizient". Durch einige Maßnahmen (wie die Anzahl der eingegebenen Zeichen) kann die zweite effizienter sein. Durch andere (z. B. die Fähigkeit, denselben "ostream_iterator" mehr als einmal zu verwenden, um mehrere Vektoren von int auszugeben) kann der erste sein. Wenn Ihr Maß CPU-Zyklen oder Speichernutzung ist, hängen die Ergebnisse von der Qualität des Compilers und der Codierung der Standardbibliothek ab. Die wirkliche Antwort ist also "es kommt darauf an". – Peter