Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Алгоритм for__each



Этот алгоритм позволяет выполнить некоторое действие над каждым элементом диапазона [fist, last).

Чтобы определить, какое именно действие должно быть выполнено, нужно написать соответствующую функцию с одним аргументом типа Т (Т — тип данных, содержащихся в контейнере).

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

Имя этой функции передается в качестве третьего аргумента алгоритма.

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

void InchToCm (double inch) {

cout << (inch * =2.54) << ' ';

}

int main(){

double inches [ ] = {0.5, 1.0, 1.5, 2.0, 2.5};

for_each(inches, inches + 5, InchToCm);

Return 0;

}

Алгоритм search

Некоторые алгоритмы оперируют одновременно двумя контейнерами.

Таков и алгоритм search, находящий первое вхождение в первую последовательность [first1, last1) второй последовательности [first2, last2).

Например:

int main() {

int arr[] = {11, 77, 33, 11, 22, 33, 11, 22, 55};

int pattern[] = { 11, 22, 33 };

int* ptr = search(arr, arr + 9, pattern, pattern + 3);

if (ptr == arr + 9)

cout << "Pattern not found" << endl;

Else

cout << "Found at position " << (ptr - arr) << endl;

list<int> lst (arr, arr + 9);

1ist<int>::iterator ifound;

ifound = search(lst.begin(), lst.end(), pattern, pattern + 3);

if (ifound == lst.end())

cout << "Pattern not found" << endl;

Else

cout << "Found." << endl;





Дата публикования: 2014-11-28; Прочитано: 254 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.011 с)...