c++ - Move pointer to object from one list to another without destroying object -


consider code:

transferptr(node *moveme, list<node*> &lista, list<node*> &listb) {     // how remove moveme a?     listb.push_back(moveme); } 

assume pointer moveme (pointer node, or object) in lista, we're given pointer, not iterator. we're moving moveme out of lista , listb.

how remove moveme lista?

by using list splice function can avoid memory allocation list node. using remove() have search list anyway.

list<node*>::iterator = std::find(lista.begin(), lista.end(), moveme); if (i != lista.end()) {     listb.splice(listb.end(), lista, i); } 

if pointer can exist more 1 time in list you'll need use following, stl implementation may not efficiently you'd hope.

list<node*>::iterator = std::remove(lista.begin(), lista.end(), moveme); if (i != lista.end()) {     listb.splice(listb.end(), lista, i, lista.end()); } 

Comments

Popular posts from this blog

Android layout hidden on keyboard show -

google app engine - 403 Forbidden POST - Flask WTForms -

c - Why would PK11_GenerateRandom() return an error -8023? -