Вперед Зміст

Використання функції find_if

Функція find_if знаходиться у бібліотеці algorithm. Тому для її використання необхідно підключити

#include <algorithm>

Функція дозволяє виконати пошук у контейнері ітератора першого елемента з певною властивістю.

Шуканий ітератор = find_if (ітератор початку, ітератор кінця, ім'я логічної функції);

Тут ім'я логічної функції: вказується ім’я логічної функції, яка буде перевіряти кожний елемент контейнеру, чи задовольняє він потрібній властивості.

Результатом цього пошуку є ітератор, який вказує на потрібний елемент.

Якщо такого елемента немає, ітератор вказує на адресу після останнього елемента.

Приклад

Написати функцію з прототипом bool Neg(int x), яка визначає, чи є число х від'ємним . Якщо так, то функція повертає true, якщо ні, то функція повертає false.

Написати таку програму:

#include <iostream>
#include <cstdlib>
#include <ctime>
#include <vector>
#include <algorithm>
using namespace std;

// Прототипи функцій
void RandVect(vector<int>& v, int n, int a, int b);
void PrintVect(const vector<int>& v);
bool Neg(int x);

int main() {
    // Ініціалізація генератора випадкових чисел
    srand(time(0));
    
    // Введення параметрів
    int a, b, n;
    cout << "Введіть мінімальне значення (a): ";
    cin >> a;
    cout << "Введіть максимальне значення (b): ";
    cin >> b;
    cout << "Введіть кількість елементів (n): ";
    cin >> n;

    // Створення та заповнення вектора
    vector<int> vect;
    RandVect(vect, n, a, b);
    
    // Виведення вектора
    cout << "Згенерований вектор: ";
    PrintVect(vect);

    // Пошук першого від'ємного елемента
    auto iter = find_if(vect.begin(), vect.end(), Neg);
    
    // Виведення результату
    if (iter != vect.end()) {
        cout << "Перший від'ємний елемент: " << *iter;
    } else {
        cout << "Error: від'ємні елементи відсутні";
    }

    return 0;
}

// Функція для заповнення вектора випадковими числами
void RandVect(vector<int>& v, int n, int a, int b) {
    v.resize(n);
    for (int i = 0; i < n; i++) {
        v[i] = a + rand() % (b - a + 1);
    }
}

// Функція для виведення вектора
void PrintVect(const vector<int>& v) {
    for (int num : v) {
        cout << num << " ";
    }
    cout << endl;
}

// Функція, яка визначає чи є число від'ємним
bool Neg(int x) {
    return x < 0;
}

Пояснення роботи програми:

  1. Функція Neg: Проста функція, яка повертає true, якщо число від'ємне (x < 0), і false в іншому випадку.
  2. Введення даних: Користувач вводить діапазон [a, b] та кількість елементів n.
  3. Заповнення вектора: Функція RandVect заповнює вектор n випадковими числами з діапазону [a, b].
  4. Виведення вектора: Функція PrintVect виводить всі елементи вектора.
  5. Пошук від'ємного елемента: Алгоритм find_if шукає перший елемент, для якого функція Neg повертає true.
  6. Виведення результату: Програма виводить знайдений елемент або повідомлення про його відсутність.

Приклад роботи програми:


Введіть мінімальне значення (a): -5
Введіть максимальне значення (b): 5
Введіть кількість елементів (n): 8
Згенерований вектор: 2 -3 4 0 -1 5 -2 1 
Перший від'ємний елемент: -3

Ключові особливості:

Вперед Зміст