Читаем C++ для начинающих полностью

count_if( InputIterator first,

InputIterator last, Predicate pred );

count_if() применяет предикат pred к каждому элементу из диапазона, ограниченного парой итераторов [first,last). Алгоритм сообщает, сколько раз предикат оказался равным true.

#include algorithm

#include list

#include iostream.h

class Even {

public:

bool operator()( int val )

{ return val%2 ? false : true; }

};

int main()

{

int ia[] = {0,1,1,2,3,5,8,13,21,34};

list int,allocator ilist( ia, ia+10 );

/*

* не поддерживается в текущей реализации

*****************************************************

typedef

iterator_traitsInputIterator::distance_type

distance_type;

distance_type ia_count, list_count;

// счетчик четных элементов: 4

ia_count = count_if( &ia[0], &ia[10], Even() );

list_count = count_if( ilist.begin(), ilist_end(),

bind2nd(lessint(),10) );

******************************************************

*/

int ia_count = 0;

count_if( &ia[0], &ia[10], Even(), ia_count );

// печатается:

// count_if(): есть 4 четных элемент(а).

cout "count_if(): есть "

ia_count " четных элемент(а).\n";

int list_count = 0;

count_if( ilist.begin(), ilist.end(),

bind2nd(lessint(),10), list_count );

// печатается:

// count_if(): есть 7 элемент(ов), меньших 10.

cout "count_if(): есть "

list_count

" элемент(ов), меньших 10.\n";

}

<p>Алгоритм equal()</p>

template class InputIterator1, class InputIterator2

bool

equal( InputIterator1 first1,

InputIterator1 last, InputIterator2 first2 );

template class InputIterator1, class InputIterator2,

class BinaryPredicate

bool

equal( InputIterator1 first1, InputIterator1 last,

InputIterator2 first2, BinaryPredicate pred );

equal() возвращает true, если обе последовательности одинаковы в диапазоне, ограниченном парой итераторов [first,last). Если вторая последовательность содержит дополнительные элементы, они игнорируются. Чтобы убедиться в тождественности данных последовательностей, необходимо написать:

if ( vec1.size() == vec2.size() &&

equal( vec1.begin(), vec1.end(), vec2.begin() );

или воспользоваться оператором равенства, определенном в классе самого контейнера: vec1 == vec2. Если второй контейнер содержит меньше элементов, чем первый, и алгоритму приходится просматривать элементы за концом контейнера, то поведение программы не определено. По умолчанию для сравнения применяется оператор равенства в классе элементов контейнера, а во втором варианте алгоритма - указанный предикат pred.

#include algorithm

#include list

#include iostream.h

class equal_and_odd{

public:

bool

operator()( int val1, int val2 )

{

return ( val1 == val2 &&

( val1 == 0 || val1 % 2 ))

? true : false;

}

};

int main()

{

int ia[] = { 0,1,1,2,3,5,8,13 };

int ia2[] = { 0,1,1,2,3,5,8,13,21,34 };

bool res;

// true: обе последовательности совпадают до длины ia

// печатается: int ia[7] равно int ia2[9]? Да.

res = equal( &ia[0], &ia[7], &ia2[0] );

cout "int ia[7] равно int ia2[9]? "

( res ? "Да" : "Нет" ) ".\n";

list int, allocator ilist( ia, ia+7 );

listint, allocator ilist2( ia2, ia2+9 );

Перейти на страницу:

Похожие книги

1С: Бухгалтерия 8 с нуля
1С: Бухгалтерия 8 с нуля

Книга содержит полное описание приемов и методов работы с программой 1С:Бухгалтерия 8. Рассматривается автоматизация всех основных участков бухгалтерии: учет наличных и безналичных денежных средств, основных средств и НМА, прихода и расхода товарно-материальных ценностей, зарплаты, производства. Описано, как вводить исходные данные, заполнять справочники и каталоги, работать с первичными документами, проводить их по учету, формировать разнообразные отчеты, выводить данные на печать, настраивать программу и использовать ее сервисные функции. Каждый урок содержит подробное описание рассматриваемой темы с детальным разбором и иллюстрированием всех этапов.Для широкого круга пользователей.

Алексей Анатольевич Гладкий

Программирование, программы, базы данных / Программное обеспечение / Бухучет и аудит / Финансы и бизнес / Книги по IT / Словари и Энциклопедии
1С: Управление торговлей 8.2
1С: Управление торговлей 8.2

Современные торговые предприятия предлагают своим клиентам широчайший ассортимент товаров, который исчисляется тысячами и десятками тысяч наименований. Причем многие позиции могут реализовываться на разных условиях: предоплата, отсрочка платежи, скидка, наценка, объем партии, и т.д. Клиенты зачастую делятся на категории – VIP-клиент, обычный клиент, постоянный клиент, мелкооптовый клиент, и т.д. Товарные позиции могут комплектоваться и разукомплектовываться, многие товары подлежат обязательной сертификации и гигиеническим исследованиям, некондиционные позиции необходимо списывать, на складах периодически должна проводиться инвентаризация, каждая компания должна иметь свою маркетинговую политику и т.д., вообщем – современное торговое предприятие представляет живой организм, находящийся в постоянном движении.Очевидно, что вся эта кипучая деятельность требует автоматизации. Для решения этой задачи существуют специальные программные средства, и в этой книге мы познакомим вам с самым популярным продуктом, предназначенным для автоматизации деятельности торгового предприятия – «1С Управление торговлей», которое реализовано на новейшей технологической платформе версии 1С 8.2.

Алексей Анатольевич Гладкий

Финансы / Программирование, программы, базы данных