Учитывая контейнер 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
в C ++ / Cli, поэтому мне нужны указатели на экземпляры ABC
в классе оболочки. ABC - простой класс, и я хочу, чтобы контейнер обрабатывал память. Если ответ отрицательный, я буду использовать std :: list
.