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

polevoy_cpp_2012_spring_lecture_12

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

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