элементов в std::vector
динамически распределены и их адреса могут меняться при перераспределении. Таким образом, невозможно зависеть от их адресов, потому что они нестабильны.Использование адреса элемента в устойчивом векторе
С другой стороны, если у меня есть std::vector
, который содержит некоторые элементы, и у меня нет никакого намерения что-либо изменить об этом в течение его жизненного цикла, он действителен (четко определен) для использования адресов его позиций ?
Пример:
std::vector<foo> foos;
foos.reserve(100);
for(size_t i=0;i<100;++i){
foos.emplace_back(make_random_foo());
}
//From now no one can touch foos
auto ptr_to_the_fifth_foo=&foos[4];
Другими словами, не стандартная гарантия того, что отмечая будет влиять на вектор всевозможное адреса, так как я не делал, что моим сам?
Если вы не используете какие-либо функции-члены, которые недействительны для ссылок или итераторов, вы также не делаете недействительными указатели. – Pixelchemist
Да, это сработает, если вы не используете std :: vector –
JVApen