Предположим, у меня есть вектор целых чисел,
std::vector<int> numbers;
который заполнен кучей значений, тогда я говорю сделать это (где запись существует в 43)
int *oneNumber = &numbers[43];
Гарантируется ли, что oneNumber всегда указывает на int с индексом 43, даже если, скажем, я изменяю размер чисел на что-то вроде number.resize(46)?
Я не уверен на 100%, какое ожидаемое поведение здесь, я знаю, что векторы гарантированно будут смежными, но не уверен, что эта непрерывность также будет означать, что все индексы в векторе останутся в одном и том же месте на протяжении всей его жизни.
std::list
? Поможет ли это обойти проблему неверного адреса, если вы будете использовать только вызовыlist.push_back()
для добавления элементов? (и вы не удаляете элемент, на который указываетoneNumber
? 29.09.2012std::list
сделало бы недействительными любые указатели. (кроме удаленного элемента) Мы обсуждаем это в гостиной прямо сейчас, если вы хотите присоединиться. а> 29.09.2012