Given an STL container (you may also take boost::unordered_map
and boost::multi_index_container
into account) that is non-contiguous, is it guaranteed that the memory addresses of the elements inside the container never changes if no element is removed, (but new ones can be added)?
e.g.
class ABC { };
//
//...
//
std::list<ABC> abclist;
ABC abc;
abclist.insert(abc);
ABC * abc_ptr = &(*abclist.begin());
In other word will abc_ptr
be pointed to abc
throughout the execution, if I do not remove abc
from abc_list
.
I am asking this because I am going to wrap the class ABC
in C++/Cli, so I need pointers to the ABC
instances in the wrapper class. ABC is a simple class and I want the container to handle the memory. If the answer is no then I will use std::list<ABC*>
.