
- •Томский университет систем управления и радиоэлектроники (тусур)
- •Оглавление
- •Введение
- •1. Рейтинговая система для оценки успеваемости
- •2. Темы практических занятий
- •Лабораторная работа № 1 Разделение представления и содержимого в документах. Каскадные таблицы стилей.
- •1 Введение
- •2 Описание css
- •2 Программа работы
- •Лабораторная работа № 2 Интерактивность в документах и язык Java-Script.
- •4. Программа работы
- •5. Варианты работы
- •Лабораторная работа № 3 Автоматизация формирования математических моделей электронных схем
- •1. Введение
- •2. Описание работы
- •3. Программа работы
- •4. Варианты схем
- •Приложение №1
- •Лабораторная работа № 4
- •1 Введение
- •2 Описание stl
- •3 Использование stl
- •4. Программа работы
- •5. Варианты работы
- •Индивидуальное задание № 1 Разработка сайта html, удовлетворяющего заданным параметрам.
- •1. Введение
- •2. Описание работы
- •4. Варианты работы
- •Индивидуальное задание № 2 Построение графика переходного процесса в среде Matcad методом узловых потенциалов.
- •1. Введение
- •2. Описание работы
- •3. Программа работы
3 Использование stl
Для использования контейнера STL необходимо подключить соответствующую библиотеку (для каждого контейнера своя библиотека), делается это с помощью директивы #include в начале текста программы:
#include <vector>
Для использования стандартных алгоритмов необходимо подключить библиотеку algorithm:
#include <algorithm>
Далее необходимо разрешить использование пространства имен std:
using namespace std;
После этого можно объявлять переменную, допустим для вектора целых чисел:
vector<int> ivector;
Добавление 10 элементов в контейнер с помощью метода push_back, значения вводятся пользователем:
for(int i = 0; i < 10; i++)
{
int v;
cin >> v;
ivector.push_back(v);
}
Вывод содержимого вектора, с помощью итераторов:
vector<int>::iterator it;
for(it = ivector.begin(); it != ivector.end(); it++)
cout << *it << " ";
cout << endl;
в первой строке объявляется итератор для контейнера – переменная it, затем организовывается цикл от самого первого итератора (функция begin()) до последнего (функция end() возвращает несуществующий итератор). Вывод значения, хранящегося в контейнере осуществляется в третьей строке с помощью оператора разименования итератора: *it. В четвертой строке осуществляется вывод символа перевода строки.
Для использования алгоритма сортировки сначала необходимо объявить функцию сравнения, объявим две функции: fless для сортировки по возрастанию и fgreat для сортировки по убыванию:
bool fless(int a, int b)
{
return a < b;
}
bool fgreat(int a, int b)
{
return a > b;
}
Сортировка осуществляется с помощью вызова функии sort, с передачей следующих параметров: итератор первого элемента для сортировки в контейнере, итератора следующего за последним элементом для сортировки в контейнере, и функция сравнения. Так как мы будем сортировать контейнер целиком, воспользуемся итератором начала и итератором конца. Тогда сортировка по убыванию будет выглядеть следующим образом:
sort(ivector.begin(), ivector.end(), fless);
а по возрастанию:
sort(ivector.begin(), ivector.end(), fgreat);
После вызова функции сортировки можно осуществить вывод содрежимого контейнера с помощью кода, записанного ранее.
Поиск значения осуществляется с использованием функии find, в качестве параметров ей надо передать диапазон поиска: итератор первого и последнего элемента:
it = find(ivector.begin(), ivector.end(), 5);
if(it == ivector.end())
cout << "Значение не найдено" << endl;
else
cout << "Найденное значение: " << *it << endl;
в первой строке осуществляется поиск значения 5 в контейнере, итератор на найденный элемент сохраняется в it. Если значение в контейнере не было найдено, то итератор будет равен итератору конца (ivector.end()). Во второй строке осуществляется проверка было ли значение найдено. Если нет – выводится строка «Значение не найдено», если найдено – «Найденное значение: » и вывод самого значения по итератору.
Работа с контейнерами list и deque осуществляется аналогично, надо только подключить соответствующие библиотеки:
#include <list>
#include <deque>
Объявить соответствующие переменные:
list<int> ilist;
deque<int> ideque;
И объявить итератор для соответствующего контейнера:
list<int>::iterator it;
deque<int>::iterator it;