Файл: Лабораторная работа 1 5 Бинарные деревья 5 Цель работы 5 Краткие теоретические сведения 5 Постановка задачи 6.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 23.11.2023
Просмотров: 180
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
2 |
| ||||||||||||||||||||||||||||||||||||
3 |
| ||||||||||||||||||||||||||||||||||||
4 |
| ||||||||||||||||||||||||||||||||||||
5 |
| ||||||||||||||||||||||||||||||||||||
6 |
| ||||||||||||||||||||||||||||||||||||
7 |
|
8 |
| |||||||||||||||||||||||||||||||||||||||||||||||||
9 |
|
-
Методические указания
1. Написать программу, решающую задачу коммивояжера, указанную в варианте.
2. Для решения задачи коммивояжера использовать метод ветвей и границ.
3. Поэтапно продемонстрировать изменение исходной матрицы.
4. Исходная матрица может храниться в текстовом файле, либо объявлена в двумерном массиве в глобальной области.
-
Содержание отчета
1. Постановка задачи (общая и для конкретного варианта)
2. Анализ задачи
-
Определения функций для реализации поставленных задач -
Определение функции main()
3. Блок-схемы основных функций
4. Текст программы
5. Тесты
Лабораторная работа № 4
STL – стандартная библиотека шаблонов в С++
-
-
Цель работы:
-
Получить практические навыки при работе со стандартной библиотекой шаблонов.
-
Краткие теоретические сведения
STL-библиотека – набор алгоритмов, контейнеров, средств доступа к их содержимому и различных вспомогательных функций в С++. Библиотеки дают возможность сделать код намного короче, за счет обобщенного программирования.
Контейнерные классы
Контейнер – это объект, который хранит в себе другие объекты одного типа. Хранимые объекты могут быть объектами в смысле объектно-ориентированного программирования либо значениями встроенных типов. Данные, сохранённые в контейнере, принадлежат ему. Это означает, что, когда время существования контейнера истекает, то же самое происходит с сохранёнными в нём данными.
Библиотека STL (Standard Template Library) предоставляет целый набор шаблонных контейнерных классов. Они обладают некой базовой концепцией, которая обязует их иметь конкретные поля и методы. Например, все контейнеры имеют метод size(), который возвращает количество элементов в контейнере.
Последовательности
Базовую концепцию можно уточнять, добавляя требования. Последовательность – это важное уточнение, поскольку несколько типов контейнеров STL – vector, stack, queue, list, deque, forwart_list, priority_queue – являются последовательностями. Уточнение, заключается в том, что переход от элемента к элементу последовательности должен быть, по меньшей мере, однонаправленным, что гарантирует размещение элементов в определённом порядке, который не меняется от одного цикла итераций к другому.
Поскольку элементы в последовательности размещены в определённом порядке, становятся возможными такие операции, как вставка значений в определённую позицию и удаление определенного диапазона элементов. Для осуществления этих операций все последовательности обладают соответствующими методами:
-
insert() – метод вставки элементов. -
erase() – метод удаления элементов. -
clear() – метод удаляет все элементы контейнера.
Рассмотрим шесть типов контейнеров-последовательностей более подробно.
1. vector:
vector – это представление динамического массива в виде класса, где поддерживается автоматическое управление памятью, которое позволяет динамически менять размер объекта vector, увеличивая и уменьшая его при добавлении или удалении элементов. Он предоставляет произвольный доступ к элементам с помощью операции индексации [] и метода at().
2. deque:
Класс шаблона deque представляет собой двустороннюю очередь – тип, кратко называемый «дека». В том виде, в каком он реализован в STL, он напоминает контейнер vector, где поддерживается произвольный доступ к элементам. Основное различие между ними состоит в том, что вставка и удаление элементов из начала объекта deque – операция, выполняемая за постоянное время, в то время как для объекта vector эти операции линейны во времени.
3. list:
Класс шаблона list представляет собой двусвязный список. Каждый его элемент, за исключением первого и последнего, связан как с предшествующим элементом, так и последующим элементами, откуда следует, что по такому списку можно проходить в обоих направлениях. Различие между list и vector заключается в том, что list обеспечивает вставку и удаление за постоянное время в любой позиции списка. Также класс шаблона list имеет функции-члены, которые позволяют осуществить: слияние списков, сортировку списка, сворачивание повторяющихся элементов и другие.
4. forward_list:
В С++11 появился новый класс контейнера forward_list. Этот класс реализует односвязный список. В таком списке каждый элемент связан только со следующим элементом, но не с предыдущим.
5. queue:
Класс шаблона queue представляет собой простую очередь. Он не только не позволяет произвольный доступ к элементам очереди, но даже не разрешает выполнять итерацию по её элементам. Взамен queue ограничивается базовыми операциями, определяющими очередь.
6. stack:
Класс шаблона stack предоставляет типичный интерфейс стека. Он также, как и очередь, не разрешает произвольный доступ к элементам стека и не позволяет выполнять итерацию по своим элементам. Вместо этого stack ограничивается базовыми операциями, определяющими stack.
Ассоциативные контейнеры
Ассоциативный контейнер – ещё одно расширение концепции контейнеров. Ассоциативный контейнер связывает значение с ключом, который служит для отыскания значения. Например, ключом может быть номер квартиры в доме, а значением