Александр Степанов - РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL)

Здесь есть возможность читать онлайн «Александр Степанов - РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL)» весь текст электронной книги совершенно бесплатно (целиком полную версию без сокращений). В некоторых случаях можно слушать аудио, скачать через торрент в формате fb2 и присутствует краткое содержание. Город: Москва, Год выпуска: 1999, Издательство: МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ РАДИОТЕХНИКИ, ЭЛЕКТРОНИКИ И АВТОМАТИКИ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ), Жанр: Программирование, на русском языке. Описание произведения, (предисловие) а так же отзывы посетителей доступны на портале библиотеки ЛибКат.

  • Название:
    РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL)
  • Автор:
  • Издательство:
    МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ ИНСТИТУТ РАДИОТЕХНИКИ, ЭЛЕКТРОНИКИ И АВТОМАТИКИ (ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ)
  • Жанр:
  • Год:
    1999
  • Город:
    Москва
  • ISBN:
    нет данных
  • Рейтинг книги:
    4 / 5. Голосов: 1
  • Избранное:
    Добавить в избранное
  • Отзывы:
  • Ваша оценка:
    • 80
    • 1
    • 2
    • 3
    • 4
    • 5

РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL): краткое содержание, описание и аннотация

Предлагаем к чтению аннотацию, описание, краткое содержание или предисловие (зависит от того, что написал сам автор книги «РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL)»). Если вы не нашли необходимую информацию о книге — напишите в комментариях, мы постараемся отыскать её.

РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL) — читать онлайн бесплатно полную книгу (весь текст) целиком

Ниже представлен текст книги, разбитый по страницам. Система сохранения места последней прочитанной страницы, позволяет с удобством читать онлайн бесплатно книгу «РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL)», без необходимости каждый раз заново искать на чём Вы остановились. Поставьте закладку, и сможете в любой момент перейти на страницу, на которой закончили чтение.

Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

return *this;

}

back_insert_iterator‹Container›& operator*() {return *this;}

back_insert_iterator‹Container›& operator++() {return *this;}

back_insert_iterator‹Container›& operator++(int) {return *this;}

};

template ‹class Container›

back_insert_iterator‹Container› back_inserter(Container& x) {

return back_insert_iterator‹Container›(x);

}

template ‹class Container›

class front_insert_iterator: public output_iterator {

protected:

Container& container;

public:

front_insert_iterator(Container& x): container (x) {}

front_insert_iterator‹Container›& operator=(const Container::value_type& value) {

container.push_front(value);

return *this;

}

front_insert_iterator‹Container›& operator*() {return *this;}

front_insert_iterator‹Container›& operator++() {return *this;}

front_insert_iterator‹Container›& operator++(int) {return *this;}

};

template ‹class Container›

front_insert_iterator‹Container› front_inserter(Container& x) {

return front_insert_iterator‹Container›(х);

}

template ‹class Container›

class insert_iterator: public output_iterator {

protected:

Container& container;

Container::iterator iter;

public:

insert_iterator(Container& x, Container::iterator i) : container (x), iter(i) {}

insert_iterator‹Container›& operator=(const Container::value_type& value) {

iter = container.insert(iter, value);

++iter;

return *this;

}

insert_iterator‹Container›& operator*() {return *this;}

insert_iterator‹Container›& operator++() {return *this;}

insert_iterator‹Container›& operator++(int) {return *this;}

};

template ‹class Container, class Iterator›

insert_iterator

return insert_iterator‹Container›(x, Container::iterator(i));

}

Адаптеры функций (Function adaptors)

Функциональные адаптеры работают только с классами функциональных объектов с определёнными типами параметров и типом результата.

Отрицатели (Negators)

Отрицатели not1 и not2 берут унарный и бинарный предикаты соответственно и возвращают их дополнения.

template ‹class Predicate›

class unary_negate: public unary_function‹Predicate::argument_type, bool› {

protected:

Predicate pred;

public:

unary_negate(const Predicate& x): pred(x) {}

bool operator()(const argument_type& x) const {return !pred(x);}

};

template ‹class Predicate›

unary_negate‹Predicate› not1(const Predicate& pred) {

return unary_negate‹Predicate›(pred);

}

template ‹class Predicate›

class binary_negate: public binary_function‹Predicate::first_argument_type, Predicate::second_argument_type, bool› {

protected:

Predicate pred;

public:

binary_negate(const Predicate& x): pred(x) {}

bool operator()(const first_argument_type& x, const second_argument_type& y) const {

return !pred(x, y);

}

};

template ‹class Predicate›

binary_negate‹Predicate› not2(const Predicate& pred) {

return binary_negate‹Predicate›(pred);

}

Привязки (Binders)

Привязки bind1st и bind2nd берут функциональный объект f двух параметров и значение x и возвращают функциональный объект одного параметра, созданный из f с первым или вторым параметром соответственно, связанным с х.

template ‹class Predicate›

class binder1st: public unary_function {

protected:

Operation op;

Operation::first_argument_type value;

public:

binder1st(const Operation& x, const Operation::first_argument_type& y) : op(x), value(y) {}

result_type operator()(const argument_type& x) const {

return op(value, x);

}

};

template ‹class Operation, class T›

binder1st‹Operation› bind1st(const Operation& op, const T& x) {

return binder1st‹Operation›(op, Operation::first_argument_type(x));

}

template ‹class Operation›

class binder2nd: public unary_function‹0peration::first_argument_type, Operation::result_type› {

protected:

Operation op;

Operation::second_argument_type value;

public:

binder2nd(const Operation& x, const Operation::second_argument_type& y) : op(x), value(y) {}

result_type operator()(const argument_type& x) const {

return op(x, value);

}

};

template ‹class Operation, class T›

binder2nd‹Operation› bind2nd(const Operation& op, const T& x) {

return binder2nd‹0peration›(op, Operation::second_argument_type(x));

}

Например, find_if(v.begin(), v.end(), bind2nd(greater‹int›(), 5)) находит первое целое число в векторе v большее, чем 5; find_if(v.begin(), v.end(), bind1st(greater‹int›(), 5)) находит первое целое число в v меньшее, чем 5.

Адаптеры указателей на функции (Adaptors for pointers to functions)

Чтобы позволить указателям на (унарные и бинарные) функции работать с функциональными адаптерами, библиотека обеспечивает следующее:

template ‹class Arg, class Result›

class pointer_to_unary_function: public unary_function‹Arg, Result› {

protected:

Result (*ptr)(Arg);

public:

pointer_to_unary_function() {}

pointer_to_unary_function(Result (*x)(Arg)): ptr(x) {}

Result operator()(Arg x) const {return ptr(x);}

};

template ‹class Arg, class Result›

pointer_to_unary_function‹Arg, Result› ptr_fun(Result (*x)(Arg)) {

return pointer_to_unary_function‹Arg, Result›(x);

Читать дальше
Тёмная тема
Сбросить

Интервал:

Закладка:

Сделать

Похожие книги на «РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL)»

Представляем Вашему вниманию похожие книги на «РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL)» списком для выбора. Мы отобрали схожую по названию и смыслу литературу в надежде предоставить читателям больше вариантов отыскать новые, интересные, ещё непрочитанные произведения.


Отзывы о книге «РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL)»

Обсуждение, отзывы о книге «РУКОВОДСТВО ПО СТАНДАРТНОЙ БИБЛИОТЕКЕ ШАБЛОНОВ (STL)» и просто собственные мнения читателей. Оставьте ваши комментарии, напишите, что Вы думаете о произведении, его смысле или главных героях. Укажите что конкретно понравилось, а что нет, и почему Вы так считаете.

x