Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

cpp2

.pdf
Скачиваний:
19
Добавлен:
29.03.2016
Размер:
193.86 Кб
Скачать

Объектно-ориентированное программирование

Шаблоны и обобщенное программирование

О.А.Мирзеабасов

Кафедра ИС

Осень 2015

О.А.Мирзеабасов (Кафедра ИС)

ООП

Осень 2015

1 / 16

Содержание

1 Шаблоны классов

2 STL

3 Контейнеры

4 vector

5 Строки в C++

О.А.Мирзеабасов (Кафедра ИС)

ООП

Осень 2015

2 / 16

Шаблоны классов

template <typename Tl, typename T2>class pair { public:

Tl first; T2 second;

pair(Tl x, T2 y) : first(x), second(y) { }

};

typedef pair<int, double> idpair;

int main(){

idpair x(999,3.1459); pair<int,int> iip(1,2); return 0;

}

О.А.Мирзеабасов (Кафедра ИС)

ООП

Осень 2015

3 / 16

STL

STL, или Standard Template Library (стандартная библиотека шаблонов) — библиотека обобщенных алгоритмов и структур данных общего назначения.

Все компоненты STL определены в пространстве имен std.

STL содержит компоненты шести основных видов:

контейнеры

обобщенные алгоритмы

итераторы

функциональные объекты

адаптеры

аллокаторы.

О.А.Мирзеабасов (Кафедра ИС)

ООП

Осень 2015

4 / 16

Контейнеры

Контейнеры в STL представляют собой объекты, которые хранят коллекции других объектов.

Имеются две категории контейнеров STL:

контейнеры последовательностей;

отсортированные ассоциативные контейнеры.

О.А.Мирзеабасов (Кафедра ИС)

ООП

Осень 2015

5 / 16

Каждый класс контейнера STL определяет и делает общедоступными несколько типов.

value_type. Тип элементов, хранящихся в контейнере (Т).

pointer. Тип указателя на элементы контейнера (обычно

Т*).

reference. Тип размещения элементов контейнера (обычно

Т&).

iterator. Тип итератора, ссылающегося на значения типа reference.

difference_type. Знаковый целочисленный тип, который может представлятьразность между двумя итераторами.

size_type. Беззнаковый целочисленный тип, который может представлять любое неотрицательное значение типа difference_type.

reverse_iterator. Тип «обратного» итератора.

О.А.Мирзеабасов (Кафедра ИС)

ООП

Осень 2015

6 / 16

Контейнеры последовательностей

Контейнеры последовательностей организуют набор объектов одного и того же типа Т в строго линейную последовательность.

ВSTL имеются следующие контейнеры последовательностей:

vector<T> — вектор, последовательность переменной длины с эффективным произвольным доступом

deque<T> — двусторонняя очередь, эффективны операции добавления и удаления на границах последовательности (начало и конец)

list<T> — список, эффективны операции добавления и удаления в любом месте последовательности.

О.А.Мирзеабасов (Кафедра ИС)

ООП

Осень 2015

7 / 16

Ассоциативные контейнеры

Ассоциативные контейнеры обеспечивают возможность быстрой выборки объектов из коллекции на основе значения ключа. Размер коллекции может изменяться во время работы программы.

В STL имеется четыре типа отсортированных ассоциативных контейнеров.

set<Key>

multiset<Key>

map<Key,T>

multimap<Key,T>

О.А.Мирзеабасов (Кафедра ИС)

ООП

Осень 2015

8 / 16

Методы, общие для всех контейнеров

Итераторы:

iterator begin(); iterator end(); reverse_iterator rbegin(); reverse_iterator rend();

Размер контейнера:

size_type size(); size_type max_size(); bool empty();

О.А.Мирзеабасов (Кафедра ИС)

ООП

Осень 2015

9 / 16

vector

Векторы представляют собой последовательные контейнеры с произвольным доступом к последовательностям переменной длины, а также с быстрой вставкой и удалением в конце.

#include <vector> #include <stdio.h> using namespace std; int main(){ vector<int> iv;

for(int i=0;i<10;++i)iv.push_back(i); for(vector<int>::iterator it=iv.begin();

it!=iv.end();++it){

printf("%d\n",*it);

}

return 0;

}

О.А.Мирзеабасов (Кафедра ИС)

ООП

Осень 2015

10 / 16

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]