polevoy_cpp_2012_spring_lecture_12
.pdfstd::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 |