"Endl" fiyasko hakkında tek bir astar attığında google talk by Andrei Alexandrescu on the D programming dilini dinliyordum. Sonunda bir çizginin sonunu belirtmek ve arabayı bir akış için yıkamak için tercih edilen bir yol olduğunu düşündüm. Neden fiyasko sayılır? Kodumda kullanmamalı mıyım?C++ iostream endl fiyasko nedir?
cevap
benim yorumun yeniden gönderiliyor:
(ı varsayalım) O sadece birçok özellikle yeni, C++ programcıları gereksiz yere sık ateş basması ve potansiyel berbat onların programın performansını yapım Yenisatır için std::endl
gözü kapalı yerine '\n'
kullanmak anlamına gelir.
yanı, çoğu insan std::endl
çok nadiren gerekli ya da uygun bunu temizlemek için bile olsa bir akışı içine bir yeni satır eklemek için kurallı yolu olduğunu öğretilir.
O yüzden nadiren uygun olup bir önemli yazarak tasarruf '\n' << std::flush
üzerinde zaten olarak std::endl
bile, standart olmaması gerektiğini bazı insanların görüş (* öksürük *) 'dir.
TL; DR (ler) : Sonunda
- ,
std::endl
genellikle kötü performans ve genellikle daha yazarak dışında size hiçbir şey satın alır. - Onun kullanımları vardır, ancak bunlar öneririm en büyük codebases kullanım sıklığına göre oldukça nadirdir, bu nedenle ...
- Onun yarar tartışmaya çok açık ve aynı anda her yerde saçma - bir fiyasko gerçekten!
Sadece programınız çok sayıda stream-based I/O yapıyorsa o zaman gerçekten bir sorun. – dreamlax
AFAIK, bazı insanlar, '\ n' **' nin C'deki yeni satır olduğunu ve \ n'-> platforma özel satır sonlandırıcı dönüşümünün olduğunu bilmeden, bir satırsonu eklemenin "platform nötr" yolu olduğunu düşünür. akış tarafından ele alınır. –
Burada erken optimizasyon konuşuyor muyuz? Çıktınız için kullanmak için son kullanma basit bir şey kullanmak çok güzel. Özellikle dili öğreniyor ve çıktı almak için '\ n' nin ne yapacağını hemen göremiyorsanız. Kodunuzu öğrenmeyi öğrendikten sonra, diğer seçenekleri göz önünde bulundurabilirsiniz! –
- 1. iostream için C++ sarmalayıcı sınıfı, işleçle birlikte std :: endl gibi akış değiştiricilerini kullanın <<
- 2. # İçinde iostream var mı? C
- 3. Android'de iostream neden eklenemedi?
- 4. iostream kitaplığında kendi işlev bildirimimizi C++ olarak nasıl ekleyebilirim?
- 5. 'iostream' dosya xcode 4.5 dosyasında hata oluşmadı?
- 6. Yazılabilir ise iostream sorabilir miyim?
- 7. Aşırı yüklenen ostus operatörü segmentasyonu hatası endl
- 8. #include <iostream> var, ancak bir hata alıyorum: "cout" tanımlayıcısı tanımsız. Niye ya?
- 9. "iostream" dosyası Xcode 4.2'de bulunamadı
- 10. C++ dilinde nesne dilimleme için olası bir çözüm nedir?
- 11. C++
- 12. Basit C++ Kalıtım Örneği, Sorun nedir?
- 13. "C"
- 14. C++ kod içermez
- 15. Objektif c nedir?
- 16. VB.net'de C# 'dahili' nedir?
- 17. C++ set_intersection'ın karmaşıklığı nedir?
- 18. MsgWaitForMultipleObjects C# eşdeğeri nedir?
- 19. C# programında ThePreStub nedir?
- 20. C++ Dökümün amacı nedir?
- 21. Çift nedir? C# demek?
- 22. C için isatty() nedir?
- 23. C++
- 24. C++ - STD ::
- 25. C++
- 26. C++:
- 27. vaka tablolara Elipses Are standart C/C++
- 28. C++ C++ ile yeni/sil eşdeğeri nedir?
- 29. C++ yıkıcı davranış
- 30. bağlama işlevi sonucu C++ C++ 11
Post it! Yapışkan kağıt! –
@ildjarn:% 100 haklısınız. Tamponları yıkadığını biliyordum ve hala [CEO 2008] 'de (75. puan) kaybettim (http://ceoi2008.de/en/welcome)! Kötü alışkanlıklar! – ybungalobill
@ildjarn Öğretmenim, 'std :: endl' yerine '\ n' yerine herşeyi kullandığımız konusunda ısrar ediyor; Ama sonra tekrar sadece basit konsol programları yazıyoruz. Ama sonra tekrar tekrar, bir döngüde bir (POD) değişkeni başlatma potansiyel bir performans sorunu olduğunu düşünmek gibi görünüyor ... – Maxpm