cout « endl; }
int main()
{ list<int> L;
int x;
cout « "Enter positive integers, followed by 0:\n";
while (cin » x, x != 0) L.push_back(x);
showlist("Initial list:", L);
L.push_front(123);
showlist("After inserting 123 at the beginning:", L); list<int>::iterator i = L.begin(),• L.insert(++i, 456); showlist(
"After inserting 456 at the second position:", L); i = L.endO ; L.insert(--i, 999); showlist(
"After inserting 999 just before the end:", L); i = L. begin О; х = *i; L.pop_front();
cout « "Deleted at the beginning: " « x « endl; showlist("After this deletion:", L); i = L.endO ; x = *--i; L.pop_back();
cout « "Deleted at the end: " « x « endl; showlist("After this deletion:", L); i = L.begin));
x = *++i; cout « "To be deleted: " « x « endl; L.erase(i); showlist("After this deletion (of second element):",
L); return 0; }
Функции для вставки и удаления здесь применяются к списку, поскольку это единственный контейнерный тип, для которого все эти функции определены и выполняются эффективно, как указывает вышеприведенная таблица. В следующем примере выполнения программы (и далее в этой книге) данные, вводимые с клавиатуры, подчеркнуты:
Enter positive integers, followed by 0: 10 20 30 0 Initial list:
10 20 30 After inserting 123 at the beginning:
123 10 20 30 After inserting 456 at the second position:
123 456 10 20 30 After inserting 999 just before the end:
123 456 10 20 999 30 Deleted at the beginning: 123 After this deletion:
456 10 20 999 30 Deleted at the end: 30 After this deletion:
456 10 20 999
То be deleted: 10
After this deletion (of second element): 456 20 999
Употребление const в первых двух строчках функции showlist требует разъяснения:
void showlist(const char *str, const list<int> &L) { list<int>::const_iterator i;
Добавление приставки const к параметрам типа указатель или ссылка, как это сделано выше, является хорошей практикой, если такие параметры не используются для модификации объектов, на которые они указывают. Поскольку функция showlist не модифицирует ни строку str, ни список L, отсюда происходят два употребления слова const на первой из этих двух строчек. Из-за этого на второй строчке мы должны объявить переменную i типа const iterator, чтобы иметь возможность использовать ее вместе с L. Это похоже на применение модификатора const к указателям: если хотим присвоить вышеобъявленный параметр str указателю/), мы сможем сделать это, только использовав const при объявлении этого указателя:
const char *p; // const необходим, поскольку str р = str; // типа const char *
Стирание подпоследовательности
Если [il, г'2) является действительным диапазоном для вектора v, мы можем стереть подпоследовательность в v, заданную этим диапазоном, следующим образом:
v.erase (il, i2) ;
То же самое относится и к остальным контейнерам.
<< назад вперед >>