Quali vantaggi ottengo dallo Apache C++ standard library che non ottengo dalle implementazioni STL fornite con il compilatore e dalle librerie Boost?Perché dovrei usare la libreria standard Apache C++ piuttosto che qualsiasi altra implementazione STL insieme a Boost?
risposta
Il progetto Apache C++ Standard Library è una completa implementazione della norma ISO/IEC 14882 C++ standard Biblioteca.
La più caratteristica distintiva di questa implementazione del C++ libreria standard è la sua portabilità un gran numero di compilatori C++, sistemi operativi e hardware architetture.
Sembra che se si attribuisce estrema portabilità questo è per voi. Se non lo fai, la maggior parte di tutti imposta automaticamente l'implementazione predefinita del compilatore, quindi se mai avrai problemi, la community sarà più grande. Se non si incontrano problemi di implementazione, non vedo perché dovrebbe fare molta differenza.
Generalmente sono fiammeggiato per questa opinione, ma mi piace l'idea di avere un'azienda che posso pagare per risolvere i problemi, i miei sviluppatori (e io) non sono abbastanza intelligenti (o non hanno il tempo) per immergersi interni e correggere i bug.
La libreria Apache C++ era originariamente una libreria commerciale di Rogue Wave. Sostengono di seguire molto attentamente lo standard C++ e di lavorare duramente per assicurare la portabilità tra vari sistemi operativi e compilatori. La libreria Rogue Wave ha affermato di essere stata portata a oltre 40 compilatori.
Uno dei vantaggi che stdxx
affermazioni sembra essere fedele a me:
- Ottimizzato per compilazione veloci e estremamente piccolo file eseguibile taglie
In questo lavoro, Stroustrup parla di una nuova idea applicata in alcuni compilatori C++ chiamati SCARY
. L'ho letto per la prima volta in one of his papers. In ogni caso, questa funzione consente di ridurre le dimensioni dei file eseguibili prodotti di una quantità notevole di (~1x - ~25x)
e più veloce di (~1.2x - ~2.1x)
. Nel primo articolo, ha detto che Rogue Wave STL
supporta SCARY
, almeno in implementazioni moderno:
La versione più recente di Rogue Wave STL ha contenitore indipendente iteratori nella sua modalità di produzione, ma alcuni dei contenitori standard Gli ' iteratori non sono indipendenti nella modalità di debug . N2911 spiega che queste dipendenze non sono effettivamente richieste a scopo di debug e possono essere facilmente rimosse .
Quindi, se stdxx
si basa su Rogue Wave STL
, potrebbe avere questa idea già implementato.
stdxx è stato biforcato nel 2005; il documento SCARY è molto più recente. – MSalters
Non ho familiarità con la libreria standard Apache C++, quindi non sono sicuro di quali siano le sue funzioni.Se trovi che fornisce tutto ciò di cui hai bisogno, allora non c'è molta differenza nell'usarlo o utilizzare un'altra implementazione STL insieme a Boost. Tuttavia, Boost offre molto di più di alcune funzionalità del TR1 e piccole cose come i puntatori intelligenti. Ha anche:
- lambda/Chiusure
- Template e preprocessore metaprogrammazione
- Segnali e implementazione slot/Observer/modello ascoltatore
- involucri di riferimento
- Un sacco di altre cose a caso non sei probabile trovare altrove in una singola libreria
Tutto dipende dalle strutture di cui avete bisogno.
Purtroppo questa libreria non è più supportato a partire da luglio 2013. Vedere le mailing list di annuncio: http://mail-archives.apache.org/mod_mbox/stdcxx-dev/201307.mbox/browser
Grazie per l'aggiornamento –
- 1. Libreria standard matura per C
- 2. boost :: alternativa opzionale nella libreria standard C++
- 3. Esiste una libreria standardizzata e comunemente utilizzata per C (C99 o qualsiasi altra cosa), poiché STL è per C++?
- 4. Come usare la libreria C++ Boost con pkg-config?
- 5. Come posso usare la libreria Boost :: regex.hpp in C++?
- 6. utilizzati in STL (libreria di modelli standard)
- 7. Quale libreria dei grafici .net dovrei usare?
- 8. Libreria std C++ che collega con diversi standard C++
- 9. Leggi timeout utilizzando urllib2 o qualsiasi altra libreria http
- 10. Perché dovrei usare io_service :: work?
- 11. versioni della libreria standard C++
- 12. Come usare boost :: lambda insieme a std :: find_if?
- 13. C++ - boost :: qualsiasi serializzazione
- 14. Include la libreria standard C++
- 15. Qual è la differenza tra la libreria standard e la libreria di modelli standard?
- 16. Perché dovrei usare Powershell su C#?
- 17. NDK Android: Compresa la libreria boost C++
- 18. Perché non dovrei usare Child.prototype = Parent.Prototype piuttosto che Child.prototype = new Parent(); per l'ereditarietà di Javascript?
- 19. Toolkit Gui, che dovrei usare?
- 20. Che cosa gacutil.exe dovrei usare?
- 21. Perché dovrei usare glBindAttribLocation?
- 22. Perché dovrei usare gitignore?
- 23. Funzionamento interno della libreria standard C
- 24. Perché dovrei usare Drools?
- 25. Installazione libreria C++ Boost
- 26. Quale implementazione di bitset dovrei usare per le massime prestazioni?
- 27. Perché dovrei usare funzioni divergenti?
- 28. std, boost o altra implementazione diffusa di un contenitore tabella hash con chiavi implicite
- 29. Libreria standard Intel (C++)
- 30. C equivalente di C++ STL
post di qualche sfondo –
mi è stato suggerito di utilizzare C di Apache ++ libreria standard nel mio progetto in quanto è 'portatile' e anche ha una ricca serie di collezioni e molte altre implementazioni di algoritmi. Non voglio seguire ciecamente il suggerimento, in modo da cercare input da persone che hanno una conoscenza e un'esperienza migliori utilizzando diverse librerie di modelli. Grazie. –
Informazioni sulla parte Boost: stai chiedendo se dovresti usare la libreria standard Apache C++ al posto di Boost? O Boost al posto di un'implementazione STL – blwy10