2009-10-19 6 views
9

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?

+0

post di qualche sfondo –

+0

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. –

+0

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

risposta

5

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.

1

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.

5

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.

+0

stdxx è stato biforcato nel 2005; il documento SCARY è molto più recente. – MSalters

0

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:

  1. lambda/Chiusure
  2. Template e preprocessore metaprogrammazione
  3. Segnali e implementazione slot/Observer/modello ascoltatore
  4. involucri di riferimento
  5. Un sacco di altre cose a caso non sei probabile trovare altrove in una singola libreria

Tutto dipende dalle strutture di cui avete bisogno.

Problemi correlati