Программирование >>  Операторы преобразования типа 

1 ... 104 105 106 [ 107 ] 108 109 110 ... 239


cout number of elements greater than 4: num endl:

Программа выводит следуюпщй результат:

coll: 123456789

number of elements equal to 4: 1

number of elements with even value: 4

number of elements greater than 4: 5

Вместо пользовательской функции isEven() можно воспользоваться выражением:

notl(bind2nd(modulus<int>().2))

За подробностями обращайтесь на с. 307.

Минимум и максимум

Inputlterator

min element (Inputlterator beg. Inputlterator end) Inputlterator

min element (Inputlterator beg. Inputlterator end. CompFunc op) Inputlterator

max element (Inputlterator beg. Inputlterator end) Inputlterator

max element (Inputlterator beg. Inputlterator end. CompFunc op)

О Все версии алгоритмов возвращают позицию минимального или максимального элемент в интервале [beg,end).

О Версии с двумя аргументами сравнивают элементы оператором <.

О Операция ор определяет критерий сравнения двух элементов:

opieleml ,е]ет2)

Если первый элемент меньше второго, операция должна возвращать true.

О Если в заданном интервале существует несколько элементов с минимальными или максимальными значениями, алгоритмы возвращают первый найденный элемент.

О Предикат ор не должен изменять передаваемые аргументы.

О Сложность линейная (numberOfElements-\ сравнений или вызовов ор соответственно).

Следующая программа выводит минимальный и максимальный элементы соП, а также элементы с минимальным и максимальным абсолютным значением (модулем):

algo/minmaxl.cpp #include <cstdlib>



#1nclude algostuff.hpp using namespace std:

bool absLess (lnt elemi, int elem2) {

return abs(eleml) < abs(elem2);

lnt ma1n()

deque<int> coll;

INSERT ELEMENTS(coll,2.8): lNSERT ELEMENTS(coll.-3.5):

PRINT ELEMENTS(coll):

Вычисление и вывод минимума и максимума cout mlnlmurn:

*ni1n element(coll .beg1n().coll .endO)

endl: cout maximum:

*max element(coll .beginO.coll ,endO)

endl;

Вычисление и вывод минимума и максимума

ло абсолютным значениям

cout minimum of absolute values:

*m1n element(coll .beginO .coll .endO . absLess)

endl:

cout maximum of absolute values:

*max element(col 1.begln().col 1.end О. absLess)

endl:

Результат выполнения программы:

2345678 -3 -2 -1 012345 minimum: -3 maximum: 8

minimum of absolute values: 0 maximum of absolute values: 8

Обратите внимание: алгоритмы возвращают позицию минимального/максимального элемента, а не значение, поэтому при выводе используется унарный оператор *.



Поиск элементов Поиск первого совпадающего элемента

Inputlterator

find (Inputlterator beg. Inputlterator end. const T& value) Inputlterator

flnd if (Inputlterator beg. Inputlterator end. UnaryPredicate op)

О Первая форма возвращает позицию первого элемента со значением value в интервале lbeg,end).

О Вторая форма возвращает позицию первого элемента в интервале [beg,end), для которого предикат ор{е1ет) возвращает true.

О Если подходящий элемент не найден, обе формы возвращают end.

О Предикат ор не должен изменять свое состояние во время вызова. За подробностями обращайтесь на с. 303.

О Предикат ор не должен изменять передаваемые аргументы.

О В упорядоченных интервалах рекомендуется использовать алгоритмы lower boundO, upper bound(), equaLrange() и binary search() (см. с. 399).

О В классах ассоциативных контейнеров (множества, мультимножества, отображения и мультиотображения) определена аналогичная функция find(), которая имеет логарифмическую, а не линейную сложность (см. с. 239).

О Сложность линейная (не более numberOfElements сравнений или вызовов ор соответственно).

В следующем примере алгоритм find() используется для поиска подинтервала, который начинается и заканчивается элементами со значением 4:

algo/findl.cpp #include algostuff.hpp using namespace std:

int mainO {

list<int> coll:

INSERT ELEMENTS(coll.l.9): lNSERTJLEMENTS(coll.l.9):

PRINT ELEMENTS(coll. COll: );

Поиск первого элемента со значением 4 list<int>::iterator posl:

posl = find (coll .beginO. coll.endO. Интервал 4): Значение

/* Поиск второго элемента со значением 4

* - поиск начинается после поэиции первого найденного элемента



1 ... 104 105 106 [ 107 ] 108 109 110 ... 239

© 2006 - 2025 pmbk.ru. Генерация страницы: 0.085
При копировании материалов приветствуются ссылки.
Яндекс.Метрика