🗊 Презентация САОД (stl)

Нажмите для полного просмотра!
САОД (stl), слайд №1 САОД (stl), слайд №2 САОД (stl), слайд №3 САОД (stl), слайд №4 САОД (stl), слайд №5 САОД (stl), слайд №6 САОД (stl), слайд №7 САОД (stl), слайд №8 САОД (stl), слайд №9 САОД (stl), слайд №10 САОД (stl), слайд №11 САОД (stl), слайд №12 САОД (stl), слайд №13 САОД (stl), слайд №14 САОД (stl), слайд №15 САОД (stl), слайд №16 САОД (stl), слайд №17 САОД (stl), слайд №18 САОД (stl), слайд №19 САОД (stl), слайд №20 САОД (stl), слайд №21 САОД (stl), слайд №22 САОД (stl), слайд №23 САОД (stl), слайд №24 САОД (stl), слайд №25 САОД (stl), слайд №26 САОД (stl), слайд №27 САОД (stl), слайд №28 САОД (stl), слайд №29 САОД (stl), слайд №30 САОД (stl), слайд №31 САОД (stl), слайд №32 САОД (stl), слайд №33 САОД (stl), слайд №34 САОД (stl), слайд №35 САОД (stl), слайд №36 САОД (stl), слайд №37 САОД (stl), слайд №38 САОД (stl), слайд №39 САОД (stl), слайд №40 САОД (stl), слайд №41 САОД (stl), слайд №42 САОД (stl), слайд №43 САОД (stl), слайд №44 САОД (stl), слайд №45 САОД (stl), слайд №46 САОД (stl), слайд №47 САОД (stl), слайд №48

Содержание

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

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


Слайд 1


САОД (stl) А. Задорожный 2017
Описание слайда:
САОД (stl) А. Задорожный 2017

Слайд 2


Контрольные вопросы Для каких целей применяются объекты, учитывающие ссылки? Можно ли сказать, что в .Net применяются объекты, учитывающие ссылки?...
Описание слайда:
Контрольные вопросы Для каких целей применяются объекты, учитывающие ссылки? Можно ли сказать, что в .Net применяются объекты, учитывающие ссылки? Что позволяют описывать шаблоны в C++? Для чего нужен алгоритм Бойера-Мура?

Слайд 3


Рассмотрены Value и Reference типы, ссылки в .Net STL Потоки Строки Общие свойства контейнеров Последовательные контейнеры: Список Динамический...
Описание слайда:
Рассмотрены Value и Reference типы, ссылки в .Net STL Потоки Строки Общие свойства контейнеров Последовательные контейнеры: Список Динамический массив Очереди и стеки Ассоциативные контейнеры: Множества Словари (map) Примеры применения контейнеров Умные указатели

Слайд 4


Value и Reference типы в .Net Типы-значения: struct, enum. В частности, int, double, bool и char. Остальные типы ссылочные. MyClass x = new...
Описание слайда:
Value и Reference типы в .Net Типы-значения: struct, enum. В частности, int, double, bool и char. Остальные типы ссылочные. MyClass x = new MyClass(); Различия при копировании и присваивании.

Слайд 5


Value и Reference типы в .Net Остальные типы ссылочные. MyClass x = new MyClass(); Объект не имеет имени (как и объекты в C++, создаваемые new). Имя...
Описание слайда:
Value и Reference типы в .Net Остальные типы ссылочные. MyClass x = new MyClass(); Объект не имеет имени (как и объекты в C++, создаваемые new). Имя у ссылки!

Слайд 6


Value и Reference типы в .Net MyStruct s1 = new MyStruct { Name = "123"}, s2 = s1; Console.WriteLine("{0} {1}", s1.Name,...
Описание слайда:
Value и Reference типы в .Net MyStruct s1 = new MyStruct { Name = "123"}, s2 = s1; Console.WriteLine("{0} {1}", s1.Name, s2.Name); s2.Name = "456"; Console.WriteLine("{0} {1}", s1.Name, s2.Name); MyClass c1 = new MyClass { Name = "123"}, c2 = c1; Console.WriteLine("{0} {1}", c1.Name, c2.Name); c2.Name = "456"; Console.WriteLine("{0} {1}", c1.Name, c2.Name);

Слайд 7


Ссылки и передача параметров в .Net void Swap(MyClass c1, MyClass c2) { MyClass c3 = c1; c1 = c2; c2 = c3; } Хотя в метод переданы ссылки, обмена...
Описание слайда:
Ссылки и передача параметров в .Net void Swap(MyClass c1, MyClass c2) { MyClass c3 = c1; c1 = c2; c2 = c3; } Хотя в метод переданы ссылки, обмена значениями не произойдет!

Слайд 8


Ссылки и передача параметров в .Net
Описание слайда:
Ссылки и передача параметров в .Net

Слайд 9


Ссылки и передача параметров в .Net void Swap(ref MyClass c1, ref MyClass c2) { MyClass c3 = c1; c1 = c2; c2 = c3; }
Описание слайда:
Ссылки и передача параметров в .Net void Swap(ref MyClass c1, ref MyClass c2) { MyClass c3 = c1; c1 = c2; c2 = c3; }

Слайд 10


Ссылки и передача параметров в .Net
Описание слайда:
Ссылки и передача параметров в .Net

Слайд 11


Ссылочные типы и строки .Net Интересной особенностью обладает тип string. String в .Net – неизменяемый ссылочный тип! Т.е., если нужно изменить...
Описание слайда:
Ссылочные типы и строки .Net Интересной особенностью обладает тип string. String в .Net – неизменяемый ссылочный тип! Т.е., если нужно изменить строку в .Net, то необходимо построить новую строку с нужным значением. String s = “123”; s += “456” После операции += создана новая строка, на которую и указывает ссылка s. Исходная строка оказалась неиспользуемой!

Слайд 12


Упражнения Предложите проверку, которая покажет, является ли объект экземпляром ссылочного типа или экземпляром типа-значения. Как убедиться, что...
Описание слайда:
Упражнения Предложите проверку, которая покажет, является ли объект экземпляром ссылочного типа или экземпляром типа-значения. Как убедиться, что String – ссылочный тип?

Слайд 13


STL – стандартная библиотека (шаблонов) STL - Standard Template Library Набор абстрактных типов данных и алгоритмов. Основное содержание в...
Описание слайда:
STL – стандартная библиотека (шаблонов) STL - Standard Template Library Набор абстрактных типов данных и алгоритмов. Основное содержание в заголовочных файлах. Для использования модуля библиотеки нужно подключить соответствующий заголовок. Файлы не имеют расширения.

Слайд 14


Потоки (STL) Обобщенный способ организации ввода/вывода. Потоки ввода (istream), Потоки вывода (ostream), И потоки ввода-вывода (iostream).
Описание слайда:
Потоки (STL) Обобщенный способ организации ввода/вывода. Потоки ввода (istream), Потоки вывода (ostream), И потоки ввода-вывода (iostream).

Слайд 15


Моды потоков Потоки открываются в бинарной и текстовой моде В текстовой моде можно управлять форматированием. Например, представлением целых чисел....
Описание слайда:
Моды потоков Потоки открываются в бинарной и текстовой моде В текстовой моде можно управлять форматированием. Например, представлением целых чисел. cout

Слайд 16


Специальные потоки потоки cout, cin, cerr, clog связаны только со стандартным вводом выводом и применимы только в консольных приложениях. Остальные...
Описание слайда:
Специальные потоки потоки cout, cin, cerr, clog связаны только со стандартным вводом выводом и применимы только в консольных приложениях. Остальные потоки не имеют ограничений. Для работы с файловыми потоками нужно использовать заголовок #include

Слайд 17


Файловые потоки. Пример #include #include using namespace std; int main(){ char fName[128]; cout
Описание слайда:
Файловые потоки. Пример #include #include using namespace std; int main(){ char fName[128]; cout

Слайд 18


Строки. Стандартная библиотека предоставляет класс работы со строками – заголовок . Теперь вместо: char fName[128]; cout
Описание слайда:
Строки. Стандартная библиотека предоставляет класс работы со строками – заголовок . Теперь вместо: char fName[128]; cout

Слайд 19


Строки. Минимальный набор. Конструкторы: string(), string (const char *p) и string(const string &s). Операции: length(), [], =, +, +=, , … string...
Описание слайда:
Строки. Минимальный набор. Конструкторы: string(), string (const char *p) и string(const string &s). Операции: length(), [], =, +, +=, , … string substr(int Offset, int Length) int find(const string &s, int Offset) - возвращает индекс ближайшего появления подстроки начиная с Offset и -1 если нет. Всего несколько десятков методов.

Слайд 20


Контейнеры в STL Важная часть STL – шаблоны контейнеров. Контейнеры – класс для хранения объектов других классов. Реализуют все базовые структуры...
Описание слайда:
Контейнеры в STL Важная часть STL – шаблоны контейнеров. Контейнеры – класс для хранения объектов других классов. Реализуют все базовые структуры данных: deque (queue, stack), - очередь с двумя концами list, - связный список vector (priority_queue) – динамический массив hash_map, hash_set, hash_multimap, hash_multiset map, set, multimap, multiset

Слайд 21


Общие свойства контейнеров Контейнеры STL можно параметризовать любыми типами, для которых определены операции =, == и
Описание слайда:
Общие свойства контейнеров Контейнеры STL можно параметризовать любыми типами, для которых определены операции =, == и

Слайд 22


Итераторы Итераторы - типы, позволяющие двигаться по контейнеру ::iterator i = obj.begin(); ::iterator i = obj.end(); Метафора итератора – указатель....
Описание слайда:
Итераторы Итераторы - типы, позволяющие двигаться по контейнеру ::iterator i = obj.begin(); ::iterator i = obj.end(); Метафора итератора – указатель. for(::iterator i = obj.begin(); i != obj.end(); i++) { // Делаем что хотели с элементами, //используя *i; } Начиная с C++11 можно: for (auto &v : obj) { // Делаем что хотели с элементами, //используя v; }

Слайд 23


Итераторы и .Net Как правило, использование итераторов позволяет более эффективно пройти по всему контейнеру, чем другие способы; Аналогией в .Net...
Описание слайда:
Итераторы и .Net Как правило, использование итераторов позволяет более эффективно пройти по всему контейнеру, чем другие способы; Аналогией в .Net является применение оператора foreach foreach(var p in Lst) { //… обработка элемента контейнера p }

Слайд 24


Последовательные контейнеры. Список. typedef list LSTSTR; //Создание LSTSTR lst1, lst2(5, “abc”); LSTSTR lst3(lst2), lst4(lst2.begin(),...
Описание слайда:
Последовательные контейнеры. Список. typedef list LSTSTR; //Создание LSTSTR lst1, lst2(5, “abc”); LSTSTR lst3(lst2), lst4(lst2.begin(), --lst2.end()); //Проверка на пустоту cout

Слайд 25


Список //Добавление элементов lst1.push_back(“2”); lst1.push_front(“1”); // {1,2} lst1.insert(--lst1.end(), “a”); // list is {1,a,2} cout
Описание слайда:
Список //Добавление элементов lst1.push_back(“2”); lst1.push_front(“1”); // {1,2} lst1.insert(--lst1.end(), “a”); // list is {1,a,2} cout

Слайд 26


Последовательные контейнеры. Динамический массив. typedef vector VINT; //Создание VINT v1, v2(100); VINT v3(v2.begin(), --v2.end()); //Присваивание...
Описание слайда:
Последовательные контейнеры. Динамический массив. typedef vector VINT; //Создание VINT v1, v2(100); VINT v3(v2.begin(), --v2.end()); //Присваивание v3 = v1; //Доступ к элементам v2[i] = 10; v2.push_back(11); // добавляет элемент в конец массива cout

Слайд 27


Последовательные контейнеры. Динамический массив. В дополнение к списку vector (как и string) имеет 2 характеристики размера: size() – количество...
Описание слайда:
Последовательные контейнеры. Динамический массив. В дополнение к списку vector (как и string) имеет 2 характеристики размера: size() – количество элементов; capacity () – количество элементов, который может включать без расширения памяти; Очевидно, size()

Слайд 28


Последовательные контейнеры. Очереди и стеки. - Double ended queue, двусторонняя очередь (сокращенно Дек). Позволяет помещать и получать объекты в...
Описание слайда:
Последовательные контейнеры. Очереди и стеки. - Double ended queue, двусторонняя очередь (сокращенно Дек). Позволяет помещать и получать объекты в порядке поступления как в начало, так и в конец. Основные операции: push_back(), push_front () pop_back(), pop_front () Ясно, что ограничивая функционал дека можно прийти к очереди (queue) и стеку (stack).

Слайд 29


Ассоциативные контейнеры. Множество. typedef set SETSTR; //Создание SETSTR s, s2; //Пустой cout
Описание слайда:
Ассоциативные контейнеры. Множество. typedef set SETSTR; //Создание SETSTR s, s2; //Пустой cout

Слайд 30


Ассоциативные контейнеры. Таблицы. typedef map STR2INT; //Создание STR2INT m; //Пустой cout
Описание слайда:
Ассоциативные контейнеры. Таблицы. typedef map STR2INT; //Создание STR2INT m; //Пустой cout

Слайд 31


Таблицы STR2INT::iterator i = m.find(“ab”); //i == m.end() //Содержат пары! for (STR2INT::iterator i= m.begin(); i != m.end(); i++) cout first
Описание слайда:
Таблицы STR2INT::iterator i = m.find(“ab”); //i == m.end() //Содержат пары! for (STR2INT::iterator i= m.begin(); i != m.end(); i++) cout first

Слайд 32


Пары pair – удобная абстракция pair pr; //ключом является int, значение – string. pr.first = 1; pr.second = “123”; Пары можно копировать,...
Описание слайда:
Пары pair – удобная абстракция pair pr; //ключом является int, значение – string. pr.first = 1; pr.second = “123”; Пары можно копировать, присваивать, сравнивать (сравнивается ключ и значение!)*

Слайд 33


Прочие шаблоны Иногда полезно иметь контейнер для хранения нескольких элементов с одинаковым ключом. multiset и multimap. Определены эти...
Описание слайда:
Прочие шаблоны Иногда полезно иметь контейнер для хранения нескольких элементов с одинаковым ключом. multiset и multimap. Определены эти multi-контейнеры в тех же заголовочных файлах и . Методы контейнеров практически совпадают с set и map, за исключением того, что для multimap не определен оператор [] – выбора элемента по ключу. STL имеет набор стандартных алгоритмов. Они описаны в заголовочном файле . (алгоритмы операций с контейнерами для их заполнения, копирования, поиска элементов или пар элементов, сортировки, изменения порядка на обратный, замены одних элементов на другие и пр.) В частности, метод sort, который применялся для вектора, расположен именно в .

Слайд 34


Аналоги контейнеров в .Net List - динамический массив, аналог vector Dictionary - словарь, таблица, аналог map Аналог set в расширениях, например...
Описание слайда:
Аналоги контейнеров в .Net List - динамический массив, аналог vector Dictionary - словарь, таблица, аналог map Аналог set в расширениях, например HashSet

Слайд 35


Зачем столько контейнеров? Сложность изменения списка O(1), а чтения элемента с заданным номером O(N); Сложность изменения массива O(N), а сложность...
Описание слайда:
Зачем столько контейнеров? Сложность изменения списка O(1), а чтения элемента с заданным номером O(N); Сложность изменения массива O(N), а сложность чтения элемента с заданным номером O(1); Сложность изменения и чтения ассоциативных контейнеров O(Ln(N)).

Слайд 36


Пример применения контейнеров Задача. Посчитать количество различных слов, которые поступают с консоли в программу. Предположим, что все они в...
Описание слайда:
Пример применения контейнеров Задача. Посчитать количество различных слов, которые поступают с консоли в программу. Предположим, что все они в верхнем регистре, т.е. “Hello” и “HELLO” будут поступать как “HELLO”. typedef set SETSTR; SETSTR c; //Объявили контейнер string s; cin>>s; //Читаем слово while (s != “”){ //пока слово не пусто c.insert(s); cin>>s; //Читаем следующее слово } cout

Слайд 37


Пример применения set Если нужно вывести все различные слова, то for (SETSTR:: iterator i = c.begin(); i != c.end(); i++) cout
Описание слайда:
Пример применения set Если нужно вывести все различные слова, то for (SETSTR:: iterator i = c.begin(); i != c.end(); i++) cout

Слайд 38


Примеры применения контейнеров. Задача. Найти N самых частых слов в тексте. Задачу можно решить в 2 этапа: Посчитать сколько раз каждое слово...
Описание слайда:
Примеры применения контейнеров. Задача. Найти N самых частых слов в тексте. Задачу можно решить в 2 этапа: Посчитать сколько раз каждое слово встречалось в тексте и Найти N наиболее частых.

Слайд 39


Примеры применения контейнеров. typedef map STR2INT; STR2INT m; //Объявили контейнер string s cin>>s; //Читаем слово* while (s != “”){ //пока слово...
Описание слайда:
Примеры применения контейнеров. typedef map STR2INT; STR2INT m; //Объявили контейнер string s cin>>s; //Читаем слово* while (s != “”){ //пока слово не пусто m[s]++; // вставить, если не было и увеличить счетчик cin>>s; //Читаем следующее слово } cout

Слайд 40


Примеры применения контейнеров int N=16; set mostFriquent; for (STR2INT:: iterator i = m.begin(); i != m.end(); i++) {...
Описание слайда:
Примеры применения контейнеров int N=16; set mostFriquent; for (STR2INT:: iterator i = m.begin(); i != m.end(); i++) { mostFriquent.insert(pair(i->second, i->first)); if(mostFriquent.size() > N) mostFriquent.erase(mostFriquent.begin()); } for (set:: iterator i = mostFriquent.begin(); i != mostFriquent.end(); i++) cout second

Слайд 41


Контрольные вопросы Почему контейнеры называются абстрактными типами данных? Что такое последовательные и ассоциативные контейнеры? Приведите примеры...
Описание слайда:
Контрольные вопросы Почему контейнеры называются абстрактными типами данных? Что такое последовательные и ассоциативные контейнеры? Приведите примеры из STL. Что такое итератор в STL? Какие операции должны быть определены для объектов, вставляемых в контейнеры STL? Если в программе используется глобальный контейнер, а в него помещается локальный объект, не нарушится ли контейнер, когда локальный объект будет разрушен? Почему? Дайте рекомендации, для каких целей хорошо использовать каждый из контейнеров.

Слайд 42


Умные указатели (smart pointers) Одна из распространенных ошибок в C++ связана с new ... Нет соответствующего delete CTest * p = new CTest; Smart...
Описание слайда:
Умные указатели (smart pointers) Одна из распространенных ошибок в C++ связана с new ... Нет соответствующего delete CTest * p = new CTest; Smart pointers противостоят этой проблеме! В STL это shared_ptr. Реализованы они в модуле . shared_ptr pt(new CTest);

Слайд 43


Умные указатели (smart pointers) shared_ptr pt(new CTest); pt – это объект типа shared_ptr , проинициализированный указателем на созданный объект...
Описание слайда:
Умные указатели (smart pointers) shared_ptr pt(new CTest); pt – это объект типа shared_ptr , проинициализированный указателем на созданный объект класса CTest. Его можно использовать как указатель на динамически созданный объект! cout val

Слайд 44


Умные указатели Основные операции shared_ptr pt(new CTest); Конструкторы копирования и инициализации, = - присваивание, ->, * - доступ к членам CTest...
Описание слайда:
Умные указатели Основные операции shared_ptr pt(new CTest); Конструкторы копирования и инициализации, = - присваивание, ->, * - доступ к членам CTest и разименование; Имеются и операции сравнения ==, >= , … bool – преобразование к булевскому. 1, если инициализирован и 0, если нет! int use_count() – сколько объектов ссылается на управляемый объект

Слайд 45


Умные указатели демонстрация shared_ptr pt(new CTest); cout
Описание слайда:
Умные указатели демонстрация shared_ptr pt(new CTest); cout

Слайд 46


Умные указатели Без new Для shared_ptr реализована и “фабрика класса”, функция, которая позволяет создавать объекты этого типа и вообще отказаться от...
Описание слайда:
Умные указатели Без new Для shared_ptr реализована и “фабрика класса”, функция, которая позволяет создавать объекты этого типа и вообще отказаться от использования оператора new. shared_ptr sp = make_shared (CTest()); Работает чуть более эффективно и исключает утечки памяти даже в случае ошибок. Рекомендуется именно так!

Слайд 47


Умные указатели Заключительные замечания Умные указатели реализуют подсчет ссылок на объект владения. Появились в такой форме в C++11. Стали...
Описание слайда:
Умные указатели Заключительные замечания Умные указатели реализуют подсчет ссылок на объект владения. Появились в такой форме в C++11. Стали официальным стандартом. Все еще подвижны и развиваются. Терминология. Умные указатели реализуют идиому Resource Acquisition Is Initialization (RAII) – получение ресурса – это и его инициализация.

Слайд 48


Контрольные вопросы Что означает термин “умные указатели” (smart pointers)? Зачем они введены в STL? Как называется в stl класс умных указателей?...
Описание слайда:
Контрольные вопросы Что означает термин “умные указатели” (smart pointers)? Зачем они введены в STL? Как называется в stl класс умных указателей? Следует ли создавать объекты умных указателей динамически? Назовите основные операции над умными указателями?



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