sto cercando di codice di azione opposto a questo:Come leggere un numero arbitrario di valori usando std :: copy?
std::ostream outs; // properly initialized of course
std::set<int> my_set; // ditto
outs << my_set.size();
std::copy(my_set.begin(), my_set.end(), std::ostream_iterator<int>(outs));
dovrebbe essere qualcosa di simile:
std::istream ins;
std::set<int>::size_type size;
ins >> size;
std::copy(std::istream_iterator<int>(ins), std::istream_iterator<int>(ins) ???, std::inserter(my_set, my_set.end()));
Ma io sono bloccato con i iteratore 'fine' - interators ingresso può usare std :: advance e nè posso usare due flussi con la stessa fonte ...
C'è un modo elegante per risolvere questo? Certo che posso usare per il ciclo, ma forse c'è qualcosa di più bello :)
mentre questa è una soluzione molto interessante, si dovrebbe notare che semplicemente scrivere un loop e non farlo sarebbe più corto –
Hai usato dynamic_cast su un tipo non porfirico, non dovrebbe compilare –
@Armen Tsirunyan: La tua argomentazione è autodistruttiva. Hai ragione nella tua asserzione che i tipi non polimorfici non verranno compilati se usati con dynamic_cast. Eppure quanto sopra è compilato e funziona correttamente. Così da Ramser di occam ci rimane la conclusione che si tratta di un tipo polimorfico. Grazie e buona notte. :-) –