Domanda

Quali sono buone introduzioni alla creazione di C ++ sistemi modello di espressione? Vorrei esprimere i tipi aritmetica sull'utente definite, evitando valori temporanei (che può essere di grandi dimensioni), e per imparare a farlo direttamente, piuttosto che l'applicazione di una libreria esistente.

Ho trovato carta di Todd Veldhuizen originale e un esempio dal Josuttis C ++ Template libro , e un articolo di Kreft & Langer . È menzionato nella Lezione 6 di un corso di moderna C ++ , riferendosi torna a Josuttis.The POOMA introduce espressione Modelli bene.

Cerco semplice , esposizioni chiare.

È stato utile?

Soluzione

Si dovrebbe ottenere una copia di C ++ Template: The Complete Guide .

L'esempio di codice a cui collegare non ha il testo che accompagna, che è molto utile (il capitolo sui modelli di espressione è lungo 22 pagine). Senza il testo, tutto quello che hai è il codice senza alcun commento o spiegazione di ciò che fa e come e perché lo fa.

Altri suggerimenti

Demystified essere abbastanza ben spiegato . Si inizia mostrando come implementare le espressioni matematiche, senza modelli e mostra la base blocchi di costruzione e concetti.

La seconda parte dell'articolo illustra come refactoring l'implementazione iniziale utilizzare i modelli, invece, per migliorare le prestazioni e ridurre il codice.

IMO, l'articolo è una buona alternativa per l'espressione modello capitolo 'Modelli C ++: La guida completa'.

Incoraggio vivamente di guardare in alto biblioteca Eric Niebler Boost.Proto. A materiali introduttivi molto sottili possono essere trovati su C ++ - successivo:

http://cpp-next.com/archive/2010 / 08 / espressivo-c-introduzione /

e il suo discorso alla boost'con il 2010 è anche molto interessante

Hai tutte le fonti tranne che per il C ++ libro scientifico, che è in realtà solo la carta originale (WRT a questo tema in ogni caso) ed è piuttosto antiquato. Si potrebbe guardare in C ++ Template Metaprogrammazione per le tecniche più moderne costruite dai modelli di espressione di idee, ma qualcosa di "semplice" non sta per essere prontamente disponibili fino a quando non è semplice.

Suggerisco di rivedere gli Operatori Boost a Boost Operatori - aritmetica . Questi sono i metodi che estendono le operazioni aritmetiche fondamentali ed i confronti basati su modelli.

per quello che si vuole fare, si dovrebbe guardare il codice di Boost.ublas , come fa esattamente questo.

Inizia con il file vector.hpp e poi tornare nella gerarchia (genitori di vector<>). Matrici sono un po 'più complesso, ma il mechanisn è lo stesso.

Ora posso consigliare di non provare a riprodurre la complessità della biblioteca come un primo tentativo, come ublas_expression e cose del genere. Puoi farlo più semplice, rendendo il vostro tipo l'oggetto di base e quindi implementare un operatore binario.

Guarda anche qui: http://www.bnikolic.co. uk / blog / cpp-espressione-minimal.html

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top