PDA

View Full Version : [C++] copiare lista in altra lista vuota


mistergks
16-04-2013, 10:47
Ho una list <int> numeri; che ha 27 nodi
Poi creo una list <int> ncopy; e quindi vuota!
Voglio copiare tutta la lista numeri in ncopy!
Posso fare cosi?

Ncopy = numeri;


E posso copiare una lista in un vector? E una lista in un altra di tipo diverso?

mistergks
16-04-2013, 15:10
Up : it is important!!!

Inviato dal mio GT-I9003 usando Tapatalk

The_ouroboros
16-04-2013, 15:14
http://www.cplusplus.com/reference/list/list/list/

std::list<int> new (old.begin(),old.end());

tomminno
16-04-2013, 17:31
http://www.cplusplus.com/reference/list/list/list/

std::list<int> new (old.begin(),old.end());

o più semplicemente

list<int> source;
list<int> copy(source);
list<int> copy2 = source;

mistergks
16-04-2013, 21:48
o più semplicemente

list<int> source;
list<int> copy(source);
list<int> copy2 = source;


Quindi si puo fare!
E con list di tipo diverso? E con vector? Non riesco a capire

Inviato dal mio GT-I9003 usando Tapatalk

The_ouroboros
17-04-2013, 07:31
Liste con elementi di tipo diverso come fai a copiarle tra loro? O per te un cesto di banane è la stessa cosa di uno di pere?

Inviato dal mio Sony Xperia P

mistergks
17-04-2013, 09:57
In effetti.......


Inviato dal mio GT-I9003 usando Tapatalk

tomminno
17-04-2013, 10:35
Quindi si puo fare!
E con list di tipo diverso? E con vector? Non riesco a capire

Inviato dal mio GT-I9003 usando Tapatalk

Ma provare e/o studiare la documentazione del C++ no?
list di tipo diverso in generale non si possono copiare.
Mele e Pere al massimo fanno un cesto di Frutta :D
Se i tipi sono compatibili però la copia è possibile ad esempio:

std::list<short> s;
std::list<int> i(s.begin(), s.end());

e anche questo:

class A
{
public:
A() {}
operator int() { return 0; }
};
...

std::list<A> s;
std::list<int> i(s.begin(), s.end());

e pure questo:

class A
{
public:
A() {}
};

class B : public A
{
public:
B() {}
};

std::list<B> s;
std::list<A> i(s.begin(), s.end());


vector ha gli stessi costruttori di list, quindi è possibile copiare vector tramite costruttore oppure operatore assegnamento