🗊 Презентация Операции с последовательными контейнерами. (Лекция 2)

Нажмите для полного просмотра!
Операции с последовательными контейнерами. (Лекция 2), слайд №1 Операции с последовательными контейнерами. (Лекция 2), слайд №2 Операции с последовательными контейнерами. (Лекция 2), слайд №3 Операции с последовательными контейнерами. (Лекция 2), слайд №4 Операции с последовательными контейнерами. (Лекция 2), слайд №5 Операции с последовательными контейнерами. (Лекция 2), слайд №6 Операции с последовательными контейнерами. (Лекция 2), слайд №7 Операции с последовательными контейнерами. (Лекция 2), слайд №8 Операции с последовательными контейнерами. (Лекция 2), слайд №9 Операции с последовательными контейнерами. (Лекция 2), слайд №10 Операции с последовательными контейнерами. (Лекция 2), слайд №11 Операции с последовательными контейнерами. (Лекция 2), слайд №12 Операции с последовательными контейнерами. (Лекция 2), слайд №13 Операции с последовательными контейнерами. (Лекция 2), слайд №14 Операции с последовательными контейнерами. (Лекция 2), слайд №15 Операции с последовательными контейнерами. (Лекция 2), слайд №16 Операции с последовательными контейнерами. (Лекция 2), слайд №17 Операции с последовательными контейнерами. (Лекция 2), слайд №18 Операции с последовательными контейнерами. (Лекция 2), слайд №19 Операции с последовательными контейнерами. (Лекция 2), слайд №20 Операции с последовательными контейнерами. (Лекция 2), слайд №21 Операции с последовательными контейнерами. (Лекция 2), слайд №22 Операции с последовательными контейнерами. (Лекция 2), слайд №23 Операции с последовательными контейнерами. (Лекция 2), слайд №24 Операции с последовательными контейнерами. (Лекция 2), слайд №25 Операции с последовательными контейнерами. (Лекция 2), слайд №26 Операции с последовательными контейнерами. (Лекция 2), слайд №27

Содержание

Вы можете ознакомиться и скачать презентацию на тему Операции с последовательными контейнерами. (Лекция 2). Доклад-сообщение содержит 27 слайдов. Презентации для любого класса можно скачать бесплатно. Если материал и наш сайт презентаций Mypresentation Вам понравились – поделитесь им с друзьями с помощью социальных кнопок и добавьте в закладки в своем браузере.

Слайды и текст этой презентации


Слайд 1


Лекция 2 Операции с последовательными контейнерами
Описание слайда:
Лекция 2 Операции с последовательными контейнерами

Слайд 2


Свойства трех последовательных контейнеров
Описание слайда:
Свойства трех последовательных контейнеров

Слайд 3


Наборы операций с последов. контейнерами
Описание слайда:
Наборы операций с последов. контейнерами

Слайд 4


Замечания Говорят, что выполнение функций insert и erase занимает линейное время для векторов и двусторонних очередей, а это означает: время их...
Описание слайда:
Замечания Говорят, что выполнение функций insert и erase занимает линейное время для векторов и двусторонних очередей, а это означает: время их выполнения пропорционально длине последовательности, хранящейся в контейнере. В противоположность этому все операции, помеченные галочкой ۷ (без скобок), выполняются за постоянное время, то есть время, необходимое для их выполнения, не зависит от длины последовательности. Рассмотрим программу использования всех функции для вставки и удаления (push_back, pop_ back, push_front, pop_front, insert и erase).

Слайд 5


Операции с последовательными контейнерами. (Лекция 2), слайд №5
Описание слайда:

Слайд 6


Операции с последовательными контейнерами. (Лекция 2), слайд №6
Описание слайда:

Слайд 7


Операции с последовательными контейнерами. (Лекция 2), слайд №7
Описание слайда:

Слайд 8


Операции с последовательными контейнерами. (Лекция 2), слайд №8
Описание слайда:

Слайд 9


Операции с последовательными контейнерами. (Лекция 2), слайд №9
Описание слайда:

Слайд 10


Операции с последовательными контейнерами. (Лекция 2), слайд №10
Описание слайда:

Слайд 11


Замечания Рассмотрим употребление const в первых двух строчках функции showlist : void showlist(const char *str, const list &L) {...
Описание слайда:
Замечания Рассмотрим употребление const в первых двух строчках функции showlist : void showlist(const char *str, const list &L) { list::const_iterator i; … Добавление приставки const к параметрам типа указатель или ссылка, как это сделано выше, является хорошей практикой, если такие параметры не используются для модификации объектов, на которые они указывают. Поскольку функция showlist не модифицирует ни строку str, ни список L, отсюда происходят два употребления слова const на первой из этих двух строчек.

Слайд 12


Замечания На второй строчке мы должны объявить переменную i типа const_iterator, чтобы иметь возможность использовать ее вместе с L. Это похоже на...
Описание слайда:
Замечания На второй строчке мы должны объявить переменную i типа const_iterator, чтобы иметь возможность использовать ее вместе с L. Это похоже на применение модификатора const к указателям: если хотим присвоить вышеобъявленный параметр str указателю р, мы сможем сделать это, только использовав const при объявлении этого указателя: const char *p; // const необходим, поскольку str р = str; // описан как const char *str // типа const char *

Слайд 13


Стирание подпоследовательности Если [i1,i2) является действительным диапазоном для вектора v, мы можем стереть подпоследовательность в v, заданную...
Описание слайда:
Стирание подпоследовательности Если [i1,i2) является действительным диапазоном для вектора v, мы можем стереть подпоследовательность в v, заданную этим диапазоном, следующим образом: v.erase(i1, i2); То же самое относится и к остальным контейнерам.

Слайд 14


Сортировка вектора #include #include #include using namespace std; int vector_sort1() { vector v; int x; cout > x, x != 0) v.push_back(x); sort...
Описание слайда:
Сортировка вектора #include #include #include using namespace std; int vector_sort1() { vector v; int x; cout > x, x != 0) v.push_back(x); sort (v.begin(), v.end()); cout

Слайд 15


Замечания Вывод этой программы содержит введенные пользователем целые числа, отсортированные в восходящем порядке. Вышеприведенный вызов функции sort...
Описание слайда:
Замечания Вывод этой программы содержит введенные пользователем целые числа, отсортированные в восходящем порядке. Вышеприведенный вызов функции sort отличается от вызовов push back, insert, begin и др. Поскольку мы пишем не v.sort(...), а просто sort(...), видно, что sort является не функцией-членом класса vector, а шаблонной функцией, которая не является членом класса. Технический термин, обозначающий такую шаблонную функцию в STL,- обобщенный (generic) алгоритм, или просто алгоритм. Строчка #include необходима, поскольку мы используем алгоритм sort.

Слайд 16


Сортировка массива #include #include using namespace std; int sort2() { int a[10], x, n = 0, *p; cout > x, x != 0 && n < 10) a[n++] = x; sort(a,...
Описание слайда:
Сортировка массива #include #include using namespace std; int sort2() { int a[10], x, n = 0, *p; cout > x, x != 0 && n < 10) a[n++] = x; sort(a, a+n); cout

Слайд 17


Сортировка подпоследовательности массива Например, мы можем отсортировать только элементы а[3], a[4], а[5] и а[6], написав: sort(a+З, а+7); или, что...
Описание слайда:
Сортировка подпоследовательности массива Например, мы можем отсортировать только элементы а[3], a[4], а[5] и а[6], написав: sort(a+З, а+7); или, что эквивалентно, sort([&a[3], &а[7]);

Слайд 18


Сортировка подпоследовательности вектора В программе sort1.cpp в векторе v также отсортируем v[3], v[4], v[5] и v[6], написав: vector v;...
Описание слайда:
Сортировка подпоследовательности вектора В программе sort1.cpp в векторе v также отсортируем v[3], v[4], v[5] и v[6], написав: vector v; vector::iterator i, j; i = v.begin() + 3; j = v.begin() + 7; sort (i, j); или sort (v.begin() + 3, v.begin() + 7); Доступ по индексу возможен, т.к. вектор является контейнером произвольного доступа, для которого определен operator[] доступа по индексу. Но, мы не можем заменить v[3] на *(v + 3), потому что тип переменной v является классом, для которого не определен ни бинарный оператор +, ни унарный оператор *.

Слайд 19


Алгоритм STL sort Алгоритм sort требует произвольного доступа. Такой доступ обеспечивают векторы, массивы и двусторонние очереди, поэтому мы могли...
Описание слайда:
Алгоритм STL sort Алгоритм sort требует произвольного доступа. Такой доступ обеспечивают векторы, массивы и двусторонние очереди, поэтому мы могли использовать этот алгоритм в программах sort1.cpp и sort2.cpp. Вызов sort (v.begin () , v.end()); будет работать, если мы в программ заменим всюду vector на deque, но не на list. Список не обеспечивает произвольного доступа, поэтому с нему не применим алгоритм sort. Для сортировки списка используется метод sort() самого класса list. Например, L.sort();

Слайд 20


Инициализация контейнеров int a[3] = {10, 5, 7}; // инициализация массива int b[ ] = {8, 13}; // эквивалентно int b[2] = {8, 13}; int c[3] = {4}; //...
Описание слайда:
Инициализация контейнеров int a[3] = {10, 5, 7}; // инициализация массива int b[ ] = {8, 13}; // эквивалентно int b[2] = {8, 13}; int c[3] = {4}; // эквивалентно int c[3] = {4, 0, 0}; Инициализация также возможна и для трех других типов последовательных контейнеров: vector v(a, a+3); // int a[3] = {10, 5, 7}; deque w(a, a+3); list x(a, a+3); Но не только массив, а также vector, deque и list могут служить основой для инициализации контейнера того же типа: vector v1(v.begin(), v.end()); вектор v1 станет идентичен вектору v, оба будут состоять из трех элементов типа int: 10, 5 и 7.

Слайд 21


Инициализация контейнеров Однако, мы не можем использовать значения списка х для инициализации вектора v1. vector v1(x.begin(), x.end()); // не...
Описание слайда:
Инициализация контейнеров Однако, мы не можем использовать значения списка х для инициализации вектора v1. vector v1(x.begin(), x.end()); // не откомпилируется Способ инициализации обеспечивается конструкторами контейнерных классов. Существуют конструкторы, у которых первый параметр указывает размер и второй (необязательный) – значения всех элементов; можно написать: vector v(5,8); // Пять элементов, все = равны 8. vector v(5); В последнем случае вектор v будет содержать пять элементов, присваивать значения элементам будем позже.

Слайд 22


Алгоритм find #include #include using namespace std; int find1() { vector v; int x; cout > x, x != 0) v.push_back(x); cout > x; vector::iterator i =...
Описание слайда:
Алгоритм find #include #include using namespace std; int find1() { vector v; int x; cout > x, x != 0) v.push_back(x); cout > x; vector::iterator i = find(v.begin() , v.end(), x); if (i == v.end()) cout

Слайд 23


Алгоритм find для массива #include #include using namespace std; int find2() { int a[10] , x, n = 0; cout > x, x != 0 && n < 10) a[n++] = x; cout >...
Описание слайда:
Алгоритм find для массива #include #include using namespace std; int find2() { int a[10] , x, n = 0; cout > x, x != 0 && n < 10) a[n++] = x; cout > x; int *p = find (a, a+n, x) ; if (p == a+n) cout

Слайд 24


Алгоритм copy // copy1.cpp: Копируем вектор в список. // Первая версия: режим замещения. #include #include int copy_vector_list1() { int a[4] = {10,...
Описание слайда:
Алгоритм copy // copy1.cpp: Копируем вектор в список. // Первая версия: режим замещения. #include #include int copy_vector_list1() { int a[4] = {10, 20, 30, 40}; vector v(a, a+4); list L(4); // Список из 4 элементов copy(v.begin(), v.end(), L.begin()); list::iterator i; for (i=L.begin(); i != L.end(); ++i) cout

Слайд 25


Алгоритм copy и итератор вставки Рассмотрим режим вставки. list L; // Пустой список. Заменим вызов алгоритма сору на следующий: copy(v.begin(),...
Описание слайда:
Алгоритм copy и итератор вставки Рассмотрим режим вставки. list L; // Пустой список. Заменим вызов алгоритма сору на следующий: copy(v.begin(), v.end(), inserter(L, L.begin())); inserter(…) называется итератором вставки. // сору2.срр: Вторая версия: режим вставки. int copy_vector_list2() { int a[4] = {10, 20, 30, 40}; vector v(a, a+4); list L(5, 123); // 5 элементов, каждый =123 list:: iterator i = L.begin(); // ++i; ++i; advance (i, 3); // приращение итератора copy(v.begin(), v.end(), inserter(L, i)); for (i=L.begin(); i != L.end(); ++i) cout

Слайд 26


Краткие выводы Были рассмотрены операции с последовательными контейнерами (push_back, pop_ back, push_front, pop_front, insert и erase). Были...
Описание слайда:
Краткие выводы Были рассмотрены операции с последовательными контейнерами (push_back, pop_ back, push_front, pop_front, insert и erase). Были рассмотнрены алгоритмы (#include ): - сортировки (векторы, массивы, двуст. очереди), для списка этот алгоритм не применим, используется метод метод sort() самого класса list. sort (v.begin(), v.end()); sort([&a[3], &а[7]); Но L.sort(); - поиска (векторы, массивы, двуст. очереди, списки) i = find(v.begin() , v.end(), x); int *p = find (a, a+n, x) ; - для массива

Слайд 27


Краткие выводы - копирования (векторы, массивы, двуст. Очереди, списки): 1) в режиме замещения copy(v.begin(), v.end(), L.begin()); 1) в режиме...
Описание слайда:
Краткие выводы - копирования (векторы, массивы, двуст. Очереди, списки): 1) в режиме замещения copy(v.begin(), v.end(), L.begin()); 1) в режиме вставки (используется итератор вставки inserter(…) ) copy(v.begin(), v.end(), inserter(L, i));



Похожие презентации
Mypresentation.ru
Загрузить презентацию