Алгоритмы STL. Вспомогательные функции

   
На этом шаге мы приведем текст двух вспомогательных функций, которые будут использоваться в дальнейших примерах.

   
В следующих шагах приводятся подробные описания всех алгоритмов. Для каждого алгоритма дается минимум один
пример. Следующие вспомогательные функции упрощают код примеров, чтобы вы могли сосредоточиться на
наиболее содержательных аспектах:

#ifndef ALGOSTUFF_HPP
#define ALGOSTUFF_HPP 

#include <iostream>
#include <vector>
#include <deque>
#include <list>
#include <set>
#include <map>
#include <string>
#include <algorithm>
#include <functional>
#include <numeric>

// PRINT_ELEMENTS()
//  - вывод необязательной строки C, за которой выводятся
//  - все элементы коллекции coll, разделенные пробелами.
template <class T>
inline void PRINT_ELEMENTS (const T& coll, const char* optcstr="")
{
    typename T::const_iterator pos;

    std::cout << optcstr;
    for (pos=coll.begin(); pos!=coll.end(); ++pos) {
        std::cout << *pos << ' ';
    }
    std::cout << std::endl;
}
// INSERT_ELEMENTS (collection, first, last)
//  - заполнение коллекции значениями от first до last
//  - ВНИМАНИЕ: интервал НЕ ЯВЛЯЕТСЯ полуоткрытым
template <class T>
inline void INSERT_ELEMENTS (T& coll, int first, int last)
{
    for (int i=first; i<=last; ++i) {
        coll.insert(coll.end(),i);
    }
}

#endif //

   
Сначала в файл agostuff.hpp включаются все заголовочные файлы, которые могут быть задействованы в
примерах, чтобы их не пришлось включать отдельно. Затем определяются две вспомогательные функции.

  • Функция PRINT_ELEMENTS() выводит все элементы контейнера, переданного в первом аргументе,
    разделяя их пробелами. Второй необязательный аргумент определяет префикс - строку, которая будет выводиться
    перед элементами.
  • Функция INSERT_ELEMENTS() вставляет элементы в контейнер, переданный в первом аргументе.
    Элементам присваиваются значения в интервале, границы которого определяются вторым и третьим аргументами.
    В данном случае включаются оба аргумента (поэтому интервал не является полуоткрытым).

   
На следующем шаге мы рассмотрим алгоритм for_each.



Вы можете оставить комментарий, или Трекбэк с вашего сайта.

Оставить комментарий