Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lutsik_Yu_A_Obektno_orientir_programmir_na_yaz.pdf
Скачиваний:
63
Добавлен:
11.05.2015
Размер:
4.33 Mб
Скачать

copy(l.begin(), l.end(), ostream_iterator<int>(cout, " ")); cout << " - before front_inserter" << endl;

Итератором вставки в начало списка в обратном порядке добавляются значения массива init1 и производится повторный показ данных из списка на

экране:

 

 

 

copy(init1, init1 + 3, front_inserter(l));

 

 

 

copy(l.begin(), l.end(), ostream_iterator<int>(cout, " "));

 

 

 

cout << " - before back_inserter" << endl;

 

 

 

Теперь итератор вставки в конец добавит элементы массива

init2 в

«хвост» списка:

 

Р

copy(init2, init2 + 3, back_inserter(l));

 

copy(l.begin(), l.end(), ostream_iterator<int>(cout, " "));

 

cout << " - before inserter" << endl;

У

Сложнее всего обстоит дело с итератором inserter. Для него кроме ссылки

Г

 

 

на сам контейнер нужен итератор, указывающий на тот объект в контейнереИ

, за

которым будет произведена вставка элементов массива init3. С этой целью мы создаем переменную типа «итератор», инициализируя ее итератором, указы-

вающим на начало списка:

 

 

 

а

list<int>::iterator& itr = l.begin();

 

Теперь специальной операцией advance дел емБприращение переменной

 

 

 

 

 

 

к

итератора так, чтобы она указывала на четвертый объект в цепочке данных спи-

ска:

 

 

 

 

 

 

 

advance(itr, 4);

 

 

 

 

 

Остается добавить данные в ц почку посредством inserter и отобразить

содержимое «списка» на дисплее:

е

 

}

 

 

 

о

 

 

 

copy(init3, init3 + 3, inserter(l, itr));

 

 

copy(l.begin(), l.end(), ostream

iterator<int>(cout, " "));

 

 

 

и

 

 

 

cout << " - the end!" << endl;т

 

 

 

 

л

 

 

 

 

 

б

 

 

 

 

 

Константный итератор. Последний итератор, который мы рассмот-

рим, − константный (constant iterator). Он образуется путем модификации ос-

новного

и

 

 

 

 

 

 

тератора. Константный итератор не допускает изменения данных, на

которые он ссылается. Можно считать константный итератор указателем на константуБ. Чтобы получить константный итератор, можно воспользоваться ти- пом const iterator, предопределенным в различных контейнерах. К примеру, так можно описать переменную типа константный итератор на список:

list<int>::const_iterator c_itr;

9.4. Операции с итераторами

Существуют две важные операции для манипуляции итераторами. С од- ной из них − advance, мы познакомились в последнем примере. Это просто удобная форма инкрементирования итератора itr на определенное число n:

202

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]