Sto imparando STL e schemi di progettazione. Volevo sapere v'è alcun documento o link che spiega come i modelli di progettazione sono implementati in STL ho fatto il google ma non in grado di ottenere più datiutilizzati in STL (libreria di modelli standard)
risposta
Spero che tu intenda "quali modelli di progettazione possono essere identificati nell'STL".
Lo stack STL è un adattatore contenitore. Un adattatore è un modello di progettazione. L'iteratore è anche un modello di progettazione. Gli oggetti funzione STL sono correlati al modello di comando.
Patterns:
- Adattatori (adattatori container)
- pila
- code
- code di priorità
- Iterator
- Comando + adattatore (adattatori funzione)
- Iterator + adattatore (adattatori iterator_traits)
- iteratori inversi
- iterators inserto
- iterators streaming
- Template Method (algoritmi STL utilizzando le funzioni specificate dall'utente)
- Quale modello creazionale ? (Allocators)
Il modo in cui questi schemi sono implementati è molto diverso dal modo in cui sono implementati in un design orientato agli oggetti. Josuttis ha scritto "il concetto di STL contraddice l'idea originale di programmazione orientata agli oggetti". Questo è ciò che sta causando la confusione intorno alla tua domanda.
Avete un esempio per un adattatore iteratore in STL? – Frank
@dehmann: li ho aggiunti. Sentiti libero di modificare la mia risposta. –
5. Metodo del modello (algoritmi STL che utilizzano le funzioni specificate dall'utente) –
Penso che il tuo problema è che i modelli di progettazione non sono implementate in STL. Possono essere implementati in C++ e utilizzare contenitori e algoritmi di STL, ma STL e Design Patterns non sono correlati in nessun altro modo.
Il mio consiglio sarebbe quello di conoscere STL leggendo qualcosa come Nicolai Josuttis' excellent book The C++ Standard Library: A Tutorial and Reference o STL Tutorial and Reference Guide. Ciò ti aiuterà nell'apprendimento di ciò che l'STL può fare per te. Quindi scavare nell'implementazione di modelli di progettazione in C++ usando le tue conoscenze sulla STL.
I modelli STL e Design sono decisamente correlati. Riguardano entrambe le astrazioni. –
Iterators è un modello di progettazione. Definito in modo definitivo nell'STL. –
@MartinYork - Nonostante il nome, non sono d'accordo sul fatto che l'implementazione degli iteratori in STL sia un'implementazione del modello di progettazione di Iterator non più degli indicatori. Il pattern Iterator canonico include un metodo per determinare se l'attraversamento non produrrà più elementi senza chiedere la raccolta sottostante. –
Il Iterator pattern viene utilizzato piuttosto pesantemente nell'STL.
STL fa ampio uso di modelli. GoF chiama questo tipo di parametri. I modelli sono utili per la personalizzazione di una soluzione di modelli di progettazione o per la creazione di una nuova soluzione intuitiva. (Per ulteriori dettagli, vedere la sezione "Ereditarietà rispetto ai tipi parametrizzati" in "Design Patterns: Elements of Reusable Object-Oriented Software"). Il vantaggio di familiarizzare con STL (e boost) è che sono una buona fonte per conoscere i modelli (e la meta-programmazione) in C++, che a sua volta può essere utilizzato nella progettazione di disegni migliori.
Da C++ 11, abbiamo ottenuto threes tipi di smart pointer, cioè, shared_ptr, unique_ptr e weak_ptr, il modello dietro di loro è: modello Proxy.
- 1. Modelli di progettazione utilizzati nella libreria jQuery
- 2. Qual è la differenza tra la libreria standard e la libreria di modelli standard?
- 3. predicati standard per STL count_if
- 4. XCode 6.1 - Modelli di progetto mancanti (libreria C++ e libreria STL C++)
- 5. versioni della libreria standard C++
- 6. Libreria standard matura per C
- 7. Modelli di progettazione utilizzati nel framework .NET?
- 8. I contenitori di libreria standard (STL) supportano una forma di allocazione di nothrow?
- 9. Libreria di strutture dati standard in C?
- 10. La libreria standard Python è veramente standard?
- 11. Matrix Libreria standard
- 12. Libreria standard .NET rispetto allo standard .NET
- 13. libreria standard `tipo file`
- 14. Etichette libreria standard
- 15. Libreria standard Intel (C++)
- 16. wrapper di algoritmi STL standard/de facto C++
- 17. Un'implementazione di libreria standard può specializzare i tipi standard?
- 18. debug di codice C++ con modelli e STL con gdb
- 19. Quali sono i tipi di modelli utilizzati, pro e contro?
- 20. Embed python3 senza libreria standard
- 21. Include la libreria standard C++
- 22. Produzione di sequenze numeriche in R utilizzando modelli standard
- 23. Intervallo di python's random.random() dalla libreria standard
- 24. La libreria standard di C++ 11 avrà intestazioni di dichiarazione in avanti?
- 25. Esiste una funzione virtuale pura nella libreria standard C++?
- 26. Espressioni regolari in C++ STL
- 27. Quali ambienti C++ attivamente utilizzati mancano di supporto (la maggior parte, se non tutti) della libreria standard?
- 28. Come si utilizza una libreria di classi standard in MVC6?
- 29. Implementazioni di libreria standard C++ in diversi compilatori
- 30. L'uso di modelli di progettazione in R
L'STL è una programmazione generica non orientata agli oggetti. Hai bisogno di riadattarti. – KitsuneYMG
@kts: i modelli di progettazione non sono esclusivi della progettazione orientata agli oggetti. –
Guardate qualche implementazione STL. Il codice sorgente può rispondere a molte domande. – Ross