Diciamo che abbiamo std::set<int>
e vogliamo creare un std::vector<int>
con tutti i valori di quel set:inizializzare un contenitore con la gamma iteratore di contenitore con diverso tipo
std::set<int> set;
std::vector<int> vec(set.begin(), set.end());
Questo è semplice ed elegante. Ma diciamo che ho un std::map<std::string,int>
e voglio copiare tutti i valori su std::vector<int>
. Sfortunatamente non esiste un costruttore che accetta range di iteratori e funzioni di conversione. Perché non è previsto un tale costruttore? C'è un altro modo semplice ed elegante per inizializzare un contenitore con valori di tipo diversi?
Personalmente, preferisco l'operatore "pipe" quando uso gli adattatori boost 'auto range = m | boost :: adapters :: values; ' – Alan
@Alan Preferisco l'operatore di chiamata di funzione per le chiamate di funzione, ed è più breve da digitare (' | 'vs'() '). –