, созданный bind2nd(), называе
Автор admin
Воскресенье, 24 мая 2009 11:32
, созданный bind2nd(), называется Ь. При создании b получает два параметра (greater и 15) и сохраняет их. Для удобства обозначим экземпляр greater именем д, а экземпляр потокового итератора вывода — о. Тогда приведенный выше вызов remove_copy_if() концептуально выглядит так: remove_copy_if(a. a+SIZE. о. b(g, 15).operator()); 266 Глава 6 • Обобщенные алгоритмы В процессе перебора интервала алгоритм remove_copy_if() вызывает b для каждого элемента; в зависимости от результата вызова он решает, нужно ли игнорировать элемент при копировании в приемник. Если обозначить текущий элемент именем е, этот вызов внутри remove_copy_if() эквивалентен следующему: 1f(b(e)) Однако оператор вызова функции binder2nd просто вызывает д(еД5), поэтому приведенная команда эквивалентна такой: if(greater(e,15)) А это и есть нужное сравнение. Также существует адаптер bindlst для создания объекта binderlst, фиксирующего первый аргумент бинарной функции. Еще один пример: подсчет количества элементов интервала, отличных от 20. На этот раз будет использоваться алгоритм count_if(), упоминавшийся ранее. В библиотеке опр
Комментарии закрыты.
Последние комментарии