dimanche 28 avril 2019

Construct one list from element of another list without adding to heap memory

I am developing a memory critical application. I first generate a list, for example (C++11):

std::list<string> nodes({"Hello","Welcome", "Hi", "World"});

I need to now create a smaller list with the second and third elements of 'nodes.' Naively, I would do:

 std::list<string> sub_nodes;
 sub_nodes.push_back(*std::next(nodes.begin(),1));
 sub_nodes.push_back(*std::next(nodes.begin(),2));

But this clearly allocates memory in the heap for sub_nodes. What I wish to accomplish is to have the elements of sub_nodes occupy the same address of the elements of nodes from which they were created. In other words, I want the changes made to elements of sub_nodes reflected in those elements in nodes and vice versa. In C linked lists, this would be straight forward since the list nodes are basically pointers. How would I accomplish the same in C++?

Aucun commentaire:

Enregistrer un commentaire