Курс ООП в С презентация. ООП в с++(полный курс). Объекты и классы
Скачать 1.76 Mb.
|
Контейнерные классыМетод erase имеет следующие реализации:
iterator erase(iterator first, iterator last); – удаляет диапазон элементов first…last. void main() { vector int n, a; cout << "\nn?"; cin >> n; for(int i=0; i cout << "?"; cin >> a; v1.push_back(a); //добавление в конец } for(i=0; i Контейнерные классы//удаление первого элемента: vector cout << (*iv) << "\n"; for(i=0; i //удаление элементов со 2 по 5: vector v1.erase(v1.begin()+1, v1.begin()+5); //удаление последнего элемента: vector v1.pop_back(); } Контейнерные классыМетод swap(v) служит для обмена элементов одного типа, но не обязательно одного размера: v1.swap(v2). К векторам также применимы операции сравнения(==,!=,<,<=): // пример работы с векторами, демонстрирующий использование // методов swap(), empty (), back(), pop_back() void main() { double arr[] = {1.1, 2.2, 3.3, 4.4}; //количество элементов в массиве: int n = sizeof(arr)/sizeof(double); //инициализация вектора массивом: vector vector v1.swap(v2); //обменять содержимое v1 и v2 while (!v2.empty()) { cout << v2.back() <<" "; //вывести последний элемент v2.pop_back(); //и удалить его } } Контейнерные классыРассмотрим теперь основные операции для очередей и списков. //Пример работы с очередью typedef deque void main() { //создать объект-контейнер типа deque tdeque cout << "\nThe first queue\nn?"; int n; //количество объектов в queue long a; cin >> n; for(int i=0; i cout << "?"; cin >> a; q.push(a); //добавление в очередь } print("The first queue:\n", q); cout << "\nTwo first elements are deleting...\n"; Контейнерные классы//итератор поставили на начало очереди temp: tdeque::iterator p = q.begin(); q.erase(p, p+2); //удалили два элемента из начала p = q.begin(); q.insert(p,100); //добавили элемент в начало print("The first queue:\n", q); } Контейнерные классыПример работы со списком : void main() { list list int x=1; while(x!=0) //заполнение списка { cout<<"?"; cin>>x; l.push_back(x); //добавление в конец списка } //для печати используем функцию print(), определенную выше: print("list:",l); i = l.begin(); //итератор поставили на начало списка //добавление элемента со значением 100: l.insert(++i, 100); print("list:", l); //печать l.pop_back(); //удаление из конца l.pop_front(); //удаление из начала print("list:", l); //печать } Контейнерные классыАдаптеры контейнеров Специализированные последовательные контейнеры:
очередь; очередь с приоритетами. не являются самостоятельными контейнерными классами, а реализованы на основе рассмотренных выше классов, поэтому они называются адаптерами контейнеров. По умолчанию для стека (заголовочный файл Объявление stack stack Смысл такой реализации заключается в том, что специализированный класс просто переопределяет интерфейс класса-прототипа, ограничивая его только теми методами, которые нужны новому классу. Cтек не позволяет выполнить произвольный доступ к своим элементам, а также не дает возможности пошагового перемещения, т. е. итераторы в стеке не поддерживаются. |