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

polevoy_cpp_2012_spring_lecture_12

.pdf
Скачиваний:
9
Добавлен:
20.04.2015
Размер:
203.05 Кб
Скачать

std::ptr_fun

(пример производящей функции)

template<class Arg, class Res> pointer_to_unary_function<Arg, Res> ptr_fun(Res (*f)(Arg))

{

return pointer_to_unary_function <Arg, Res>(f);

}

28.04.2012

cppNewb.ru

61

Стандартные алгоритмы

информация о последовательности

поиск

модификация, в т.ч.

слияние

удаление

сортировка

перестановка

28.04.2012

cppNewb.ru

62

Стандартные алгоритмы (для сортированных диапазонов)

поиск (бинарный)

слияние

теоретико-множественные

проверка вхождения

объединение

пересечений

разница

симметрическая разница

28.04.2012

cppNewb.ru

63

Поиск

It find(It first,It last, const T& val);

It find_if(It first,It last, UnF pred);

28.04.2012

cppNewb.ru

64

Поиск (бинарный)

bool binary_search(

It first,It last, const T& val [, Compare comp]);

It lower_bound(

It first,It last, const T& val [, Compare comp]);

It upper_bound(

It first,It last, const T& val [, Compare comp]);

28.04.2012

cppNewb.ru

65

Информация о диапазонах

count

подсчет элементов

count_if

подсчет элементов с предикатом

equal

сравнение диапазонов

lexicographical_compare

лексикографическое сравнение диапазонов

28.04.2012

cppNewb.ru

66

Модификация диапазонов

• for_each

• remove (_if)

• transform

• copy (_if)

• fill

• replace

• generate

• insert

• swap

• partition

• equal

• unique

rotate

random_shaffle

28.04.2012

cppNewb.ru

67

std::for_each

(вызов функции для элементов)

template<class InpIt, class Func> Function for_each(InpIt first,

InpIt last, Func f)

{

for ( ; first!=last; ++first) f(*first);

return f;

}

28.04.2012

cppNewb.ru

68

std::copy (копирование диапазона)

template<class InpIt, class OutIt>

OutIt copy(InpIt first, InpItlast, OutIt result )

{

while (first != last)

*result++ = *first++;

return result;

}

28.04.2012

cppNewb.ru

69

Копирование диапазона в поток

копирование диапазона может использоваться для ввода/вывода

пример:

ostream_iterator<int> out_it (cout, ", ");

copy(vec.begin(), vec.end(), out_it);

28.04.2012

cppNewb.ru

70

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