Articles of stl

Come posso ordinare una mappa STL in base al valore?

Come posso implementare l’ordinamento della mappa STL in base al valore? Ad esempio, ho una mappa m : map m; m[1] = 10; m[2] = 5; m[4] = 6; m[6] = 1; Mi piacerebbe ordinare la mappa secondo il valore di m . Quindi, se stampo la mappa, mi piacerebbe ottenere il risultato come segue: […]

Utilizzo di una mappa STL di puntatori di funzione

Ho sviluppato un motore di scripting che ha molte funzioni incorporate, quindi per chiamare qualsiasi funzione, il mio codice è appena entrato in un if .. else if .. else if wall controlla il nome ma mi piacerebbe sviluppare una soluzione più efficiente. Dovrei usare una hashmap con stringhe come chiavi e puntatori come valori? […]

Dove posso trovare un “utile” algoritmo di ricerca binaria C ++?

Ho bisogno di un algoritmo di ricerca binaria compatibile con i contenitori C ++ STL, qualcosa come std::binary_search nell’intestazione della libreria standard, ma ho bisogno di restituire l’iteratore che punta al risultato, non un semplice booleano che mi dice se l’elemento esiste. (Una nota a parte, che diavolo stava pensando il comitato standard quando hanno […]

come inizializzare ‘const std :: vector ‘ come ac array

C’è un modo elegante per creare e inizializzare un const std::vector come const T a[] = { … } per un numero fisso (e piccolo) di valori? Ho bisogno di chiamare frequentemente una funzione che si aspetta un vector , ma questi valori non cambieranno mai nel mio caso. In linea di principio ho pensato […]

Prestazioni relative di std :: vector vs. std :: list vs. std :: slist?

Per una semplice lista collegata in cui l’accesso casuale agli elementi della lista non è un requisito, ci sono dei vantaggi significativi (prestazioni o altro) nell’usare std::list invece di std::vector ? Se è richiesto l’attraversamento all’indietro, sarebbe più efficiente usare std::slist e reverse() l’elenco prima di iterare sui suoi elementi?

Eliminazione di elementi dal set STL durante l’iterazione

Devo passare attraverso un set e rimuovere elementi che soddisfano un criterio predefinito. Questo è il codice di prova che ho scritto: #include #include void printElement(int value) { std::cout << value << " "; } int main() { int initNum[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; std::set numbers(initNum, […]

Perché usare i funtori rispetto alle funzioni?

Confrontare double average = CalculateAverage(values.begin(), values.end()); con double average = std::for_each(values.begin(), values.end(), CalculateAverage()); Quali sono i vantaggi dell’uso di un funtore su una funzione? Il primo non è molto più facile da leggere (anche prima che venga aggiunta l’implementazione)? Supponiamo che il functor sia definito in questo modo: class CalculateAverage { private: std::size_t num; double […]

Perché utilizzare funzioni di inizio e fine non membro in C ++ 11?

Ogni contenitore standard ha un metodo di begin e end per restituire gli iteratori per quel contenitore. Tuttavia, C ++ 11 ha apparentemente introdotto funzioni gratuite chiamate std::begin e std::end che chiamano le funzioni membro iniziale e end . Quindi, invece di scrivere auto i = v.begin(); auto e = v.end(); tu scriverai using std::begin; […]

Come posso stampare gli elementi di un vettore C ++ in GDB?

Voglio esaminare il contenuto di un file std::vector in GDB, come faccio? Diciamo che è un std::vector per semplicità.

È ragionevole usare std :: basic_string come buffer contiguo quando si targetizza C ++ 03?

So che in C ++ 03, tecnicamente il modello std::basic_string non ha bisogno di avere memoria contigua. Tuttavia, sono curioso di sapere quante implementazioni esistono per i moderni compilatori che effettivamente sfruttano questa libertà. Ad esempio, se si desidera utilizzare basic_string per ricevere i risultati di alcune API C (come nell’esempio seguente), sembra sciocco allocare […]