Учитывая контейнер STL (вы можете также учитывать boost::unordered_map
и boost::multi_index_container
), который является несмежным, гарантируется, что адреса памяти элементов внутри контейнера никогда не будут меняться, если элемент не будет удален ( но можно добавить новые)?
например.
class ABC { };
//
//...
//
std::list<ABC> abclist;
ABC abc;
abclist.insert(abc);
ABC * abc_ptr = &(*abclist.begin());
Другим словом будет abc_ptr
на abc
на протяжении всего выполнения, если я не удалю abc
из abc_list
.
Я спрашиваю об этом, потому что я собираюсь обернуть класс abc
в С++/Cli, поэтому мне нужны указатели на экземпляры abc
в классе-оболочке. ABC - это простой класс, и я хочу, чтобы контейнер обрабатывал память. Если ответ не будет, я буду использовать std::list<ABC*>
.