Указатели на элементы контейнеров STL

Учитывая контейнер 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 .

20
задан Matt 2 July 2013 в 17:27
поделиться