Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Программирование – 2 курс осень 2020 – 7 занятие

ТиМПИ
November 05, 2020
160

Программирование – 2 курс осень 2020 – 7 занятие

ТиМПИ

November 05, 2020
Tweet

More Decks by ТиМПИ

Transcript

  1. dscs.pro spbu.ru 3/20 Последовательные контейнеры • pair • vector •

    string • deque • list • forward_list • rope Нужна вставка в произвольную позицию? — последовательный контейнер.
  2. dscs.pro spbu.ru 5/20 Vector [] Доступ к указанному элементу empty

    Проверка на пустоту size Число элементов front Доступ к первому элементу back Доступ к последнему элементу clear Очищает контейнер insert Вставляет элементы erase Удаляет элементы push_back Добавляет элемент в конец pop_back Удаляет последний элемент
  3. dscs.pro spbu.ru 6/20 String substr Возвращает подстроку replace Заменяет подстроку

    += Добавляет символы в конец строки append Добавляет символы в конец строки find Находит заданную подстроку find_first_of Находит первый встречающийся символ заданной последовательности символов find_first_not_of Находит первый символ, не встречающийся в заданной последовательности символов stol Строку в лонг stoul Строку в беззнаковый лонг to_string Число в строку
  4. dscs.pro spbu.ru 8/20 List push_back pop_back push_front pop_front merge Слияние

    сортированных списков splice Удаляет часть элементов одного контейнера и вставляет в другой reverse Обращает порядок элементов unique Удаляет последовательные повторения sort Сортирует элементы remove_if Удаляет элементы с условием
  5. dscs.pro spbu.ru 9/20 Assign void assign( size_type count, const T&

    value ); void assign( InputIt first, InputIt last ); Заменяет содержимое контейнера. 1. заменяет содержимое на count копий значения value 2. заменяет содержимое на копию диапазона [first, last) v1.assign(11,0) v1.assign(v2.begin()+v2.size()/2, v2.end())
  6. dscs.pro spbu.ru 10/20 Стандарт Вектор (vector) представляет собой тип последовательного

    контейнера, который используется в большинстве случаев. Список (list) используется при частых операциях вставки и удаления в произвольной позиции. Дек (deque) выбирается в случае, если большинство вставок и удалений производится в начале или в конце последовательности элементов.
  7. dscs.pro spbu.ru 11/20 Платиновое правило vector<bool> v; — так делать

    не надо. 1. vector<bool> не содержит в себе bool-значений 2. vector<bool> не является вектором T *р = &с[0]; bool *pb = &v[0];
  8. dscs.pro spbu.ru 12/20 RB-деревья • Каждая вершина помечена либо красным,

    либо черным цветом • Каждый лист — черный • Если вершина красная, оба ее ребенка черные • Все пути, идущие от корня к листьям, содержат одинаковое количество черных вершин
  9. dscs.pro spbu.ru 13/20 Ассоциативные контейнеры • set • map •

    multiset • multimap Порядок элементов в ассоциативных контейнерах определяется их значением.
  10. dscs.pro spbu.ru 14/20 Set & map Set — упорядоченный набор

    уникальных элементов. Map — отображение. insert erase empty size count [] (для map) lower_bound Возвращает итератор на первый элемент, который не меньше ключа upper_bound Возвращает итератор на первый элемент, который больше ключа
  11. dscs.pro spbu.ru 15/20 Multiset & multimap Все аналогично, но можно

    хранить несколько элементов с одинаковым ключом.
  12. dscs.pro spbu.ru 17/20 Multiset & multimap: удаление элементов • erase

    по ключу удалит все элементы с нужным ключом • Хотим удалить один ключ — используем erase по итератору
  13. dscs.pro spbu.ru 18/20 Unordered • unordered_set • unordered_map • unordered_multiset

    • unordered_multimap • Преимущество: поиск, вставка и удаление выполняются за константное время.
  14. dscs.pro spbu.ru 19/20 Компараторы • Равенство != эквивалентность == равенство

    !(x<y) && !(y<x) эквивалентность • Компаратор должен быть строгим равенством set<int, less_equal<int> > s; !(10(1)<=10(2)) && !(10(2)<=10(1)) !(true)&&!(true) = false