Лабораторка инфа. 9 лаба. Контейнеры vector, map и set. Итераторы. Алгоритмы
Скачать 72.28 Kb.
|
МИНОБРНАУКИ РОССИИ САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ ЭЛЕКТРОТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ «ЛЭТИ» ИМ. В.И. УЛЬЯНОВА (ЛЕНИНА) Кафедра ФРТ ОТЧЕТ по лабораторной работе № 9 по дисциплине «Информатика» Тема: Контейнеры vector, map и set. Итераторы. Алгоритмы. Студент гр. 1106: Иванчин А.В Преподаватель: Чиркунова А. А. Санкт-Петербург 2022 Цель работы Знакомство работы с контейнерами: vector, map, set. Теоретические сведения Контейнеры: vector – это динамический массив, элементы которого размещаются последовательно в одной области памяти Инициализация: vector<тип данных> название переменной Доступ к элементам: mass[index] – доступ по индексу, без проверки диапазона mass.at(index) – доступ по индексу, с проверкой диапазона mass.front() – первый элемент mass.back() – последний элемент Итераторы mass.begin() – возвращает итератор на первый элемент mass.end() – возвращает итератор на последний элемент mass.rbegin() – возвращает итератор на последний элемент (для обратных алгоритмов) mass.rend() – возвращает итератор на первый элемент (для обратных алгоритмов) Размеры mass.empty() – возвращает true, если вектор пуст mass.size() – возвращает количество элементов mass.max_size() – возвращает максимально возможное количество элементов mass.reverse(n) – устанавливает минимальное количество элементов mass.capacity() – возвращает количество элементов, которое может вмещать до выделения большего количества памяти Модификаторы mass.clear() – удаление всех элементов mass.insert() – вставка элемента mass.erase() – удаление конкретного элемента mass.push_back() – добавление элемента в конец вектора mass.pop_back() – удаление последнего элемента mass.resize() – изменяет размер вектора mass.swap() – обмен содержимого двух векторов mass.count() – возвращает количество вхождений конкретного значения Операторы [] - индексация = - присвоение ==,!=,<,>,<=,>= - сравнения map – это динамический ассоциативный массив Инициализация: map<тип данных1, тип данных> название переменной Итераторы s.begin() – возвращает итератор на первый элемент s.end() – возвращает итератор на последний элемент s.rbegin() – возвращает итератор на последний элемент (для обратных алгоритмов) s.rend() – возвращает итератор на первый элемент (для обратных алгоритмов) Размеры s.empty() – возвращает true, если map пуст s.size() – возвращает количество элементов s.max_size() – возвращает максимально возможное количество элементов Модификаторы s.clear() – удаление всех элементов s.insert() – вставка элемента s.erase() – удаление конкретного элемента s.swap() – обмен содержимого двух контейнеров s.count() – возвращает количество вхождений конкретного значения s.find() – нахождение элемента в контейнере s.lower_bound(a) – первый элемент, меньше a s.upper_bound(a) – первый элемент, больше a s.equal_range(a) – возвращает набор элементов для ключа a s.key_comp() – сортировка по ключу s. value_comp() – сортировка по значению set – множество, динамический отсортированный массив Инициализация: set<тип данных> название переменной Итераторы mass.begin() – возвращает итератор на первый элемент mass.end() – возвращает итератор на последний элемент mass.rbegin() – возвращает итератор на последний элемент (для обратных алгоритмов) mass.rend() – возвращает итератор на первый элемент (для обратных алгоритмов) Размеры mass.empty() – возвращает true, если set пуст mass.size() – возвращает количество элементов mass.max_size() – возвращает максимально возможное количество элементов Модификаторы mass.clear() – удаление всех элементов mass.insert() – вставка элемента mass.emplace() – вставка элемента mass.erase() – удаление конкретного элемента mass.swap() – обмен содержимого двух векторов mass.count() – возвращает количество вхождений конкретного значения s.find() – нахождение элемента в контейнере s.lower_bound(a) – первый элемент, меньше a s.upper_bound(a) – первый элемент, больше a s.equal_range(a) – возвращает набор элементов для ключа a Операторы = - присвоение ==,!=,<,>,<=,>= - сравнения Алгоритмы – библиотека <algorithm> с набором различных стандартных алгоритмов (сортировки, поиски и т.д.) Итератор – тип данных iterator, обеспечивающий доступ к элементам в контейнерах. Упражнение__2.'>Упражнение_1.'>Коды модулей С++ Упражнение 1. #include #include using namespace std; int main() { setlocale(LC_ALL, "ru"); vector vector int P, n, sr = 0, sred, K = 0; cout << "Введите количество дней: "; cin >> P; for (int i = 0; i < P; i++) { cin >> n; vector1.push_back(n); } for (int i = 0; i < P; i++) { sr += vector1[i]; } sred = sr / P; for (int i = 0; i < P; i++) { if (vector1[i] > sred) { K++; vector2.push_back(i); }; } for (int i = 0; i < K; i++) { cout << K << endl; cout << vector2[i] << endl; } return 0; } Упражнение 2. #include #include #include using namespace std; int main() { vector double N, element; double sum = 0; cin >> N; for (int i = 0; i < N; i++) { cin >> element; temp.push_back(element); } auto min_max = min_element(temp.begin(), temp.end()); cout << *min_max << ' '; min_max = max_element(temp.begin(), temp.end()); cout << *min_max << endl; sort(temp.rbegin(), temp.rend()); for (auto q : temp) { cout << q << ' '; sum += q; } cout << endl << count(temp.begin(), temp.end(), (sum / temp.size())) << endl; for (auto q : temp) { if (q == (sum / temp.size())) cout << 0 << ' '; else cout << q << ' '; } Упражнение 3. #include #include Упражнение 4. #include #include Скриншоты работы программ Упражнение 1, приведены данные из примера Упражнение 2, данные из примера к упражнению 1 Упражнение 3, данные из примера Упражнение 4, данные из примера к упражнению 3 Выводы по проделанной работе Были проведено знакомство с контейнерами: vector, map, set. |