//: С07:VectorCoreDump.cpp //
Автор admin
Воскресенье, 7 июня 2009 11:32
//: С07:VectorCoreDump.cpp // Появление недействительных итераторов 356 Глава 7 • Обобщенные контейнеры #include linclude linclude using namespace std; int mainO { vector vi(10. 0): ostream_iterator out(cout. ” “): vector::iterator i = vi.beginO; *i = 47; copy(vi .beginO, vi.endO. out); cout « endl; // Выполняем принудительное перераспределение памяти // (также можно было бы добавить нужное количество объектов): vi. resize(vi .capacityO + 1): // Теперь i ссылается на недействительную память: *i = 48; // Нарушение доступа copy(vi .beginO. vi.endO. out): // vi[0] не изменяется } ///:- Данный пример иллюстрирует концепцию недействительности итераторов. Некоторые операции приводят к изменениям в базовой структуре данных контейнера, поэтому итераторы, действительные до выполнения операции, могут оказаться недействительными после нее. Если ваша программа «зависает» по каким-то загадочным причинам, посмотрите, не используются ли старые итераторы после включения новых объектов в вектор. После добавления элементов следует получить новый итератор или производить
Комментарии закрыты.
Последние комментарии