Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | ||
|
Этот алгоритм позволяет выполнить некоторое действие над каждым элементом диапазона [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 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!