Modern C ++ yapılarını kullanan iki kütüphane örneği:
- Hem öz hem de armadillo kütüphaneleri (doğrusal cebir) birkaç modern C ++ yapısını kullanır. Örneğin, aritmetik ifadeleri basitleştirmek için her iki ifade şablonunu da kullanırlar ve bazen bazı geçici değerleri ortadan kaldırabilirler:
http://eigen.tuxfamily.org
http://arma.sourceforge.net/
http://hpac.rwth-aachen.de/teaching/sem-accg-14/Armadillo.pdf (Armadillo'daki ifade şablonlarında sunum)
- CGAL kütüphanesi (hesaplama geometrisi) birçok modern C ++ özelliği kullanır (yoğun olarak şablonlar ve uzmanlıklar kullanır):
http://www.cgal.org
Not:
Modern C ++ yapıları çok zarif ve kullanımı çok eğlenceli olabilir. Hem güçlü bir nokta hem de zayıf bir nokta: onları kullanırken, çok sayıda şablon / uzmanlık / lambdas katmanı eklemek o kadar caziptir ki sonunda programda etkili koddan daha fazla "yönetim" elde edersiniz (başka bir deyişle, Programınız sorunu açıklamaktan ziyade sorun hakkında "konuşuyor". Doğru dengeyi bulmak çok incedir. Sonuç: Kodda “sinyal / gürültü” oranının gelişimini ölçerek izlemeniz gerekir :
- programda kaç kod satırı var?
- kaç tane sınıf / şablon var?
- çalışma zamanı
- hafıza tüketimi?
İlk ikisini artıran her şey bir maliyet olarak düşünülebilir (çünkü programın anlaşılmasını ve sürdürülmesini zorlaştırabilir), son ikisini azaltan her şey bir kazançtır .
Örneğin, bir soyutlamanın (sanal bir sınıf veya bir şablon) kullanılması, kodu etkileyebilir ve programı daha basit hale getirir ( kazanç ), ancak eğer yalnızca bir kez türetilmemiş / denenmemişse, o zaman ilişkili bir kazanç için bir maliyet getirmez (yine zekice çünkü kazanç, programın gelecekteki evriminde daha sonra gelebilir, bu nedenle "altın kural" yoktur).
Programcının rahatı, maliyet / kazanç dengesinde göz önünde bulundurulması gereken önemli bir faktördür: çok fazla şablonla, derleme süresi önemli ölçüde artabilir ve hata mesajlarının ayrıştırılması zorlaşır.
Ayrıca bakınız
Hesaplamalı bilimde C ++ şablonlarını kullanarak genel ve meta-programlama ne derece faydalıdır?