[C++] 배열에 특정 요소가 있는지 확인

배열의 요소들 중에 특정 값이 있는지 확인하는 방법을 소개합니다.

1. std::find()를 이용한 방법

std::find(first, last, value)는 배열의 first와 last 사이에서 value를 찾고 iterator를 리턴합니다. 배열에 찾는 요소가 없을 때는 배열의 끝을 의미하는 std::end() 값을 리턴합니다. 따라서 std::end()가 리턴되면 찾는 값이 배열에 없다는 의미가 됩니다.

아래와 같이 배열에 특정 요소가 있는지 확인할 수 있습니다.

#include <iostream>
#include <algorithm>

int main() {
    int arr[] = {9, 8, 7, 6, 5, 4};

    int num = 6;
    auto it = std::find(std::begin(arr), std::end(arr), num);
    if (it != std::end(arr)) {
        int index = std::distance(arr, it);
        std::cout << "Found, Index: " << index;
    } else {
        std::cout << "Not Found";
    }

    return 0;
}

Output:

Found, Index: 3

2. std::any_of()를 이용한 방법

std::any_of(first, last, p)는 배열의 시작 위치 first에서 last 범위의 요소들에 대해서 함수 p를 수행하고, true가 리턴되는 요소가 하나라도 있으면 any_of() 함수는 true를 리턴합니다.

아래와 같이 배열에 특정 요소가 있는지 확인할 수 있습니다.

#include <iostream>
#include <algorithm>
#include <array>

int main() {
    int arr[] = {9, 8, 7, 6, 5, 4};

    int num = 6;

    bool exists = std::any_of(std::begin(arr), std::end(arr),
                        [&](int i) {
                            return i == num;
                        });
    if (exists) {
        std::cout << "Found";
    } else {
        std::cout << "Not Found";
    }

    return 0;
}

Output:

Found

3. std::count()를 이용한 방법

std::count(first, last, value)는 배열의 first 위치에서 last 위치 사이의 요소들 중에 value와 같은 요소가 몇개 있는지 개수를 리턴합니다. 따라서, 1개 이상을 갖고 있을 때 요소가 배열에 있다고 볼 수 있습니다.

아래와 같이 배열에 특정 요소가 있는지 확인할 수 있습니다.

#include <iostream>
#include <algorithm>
#include <array>

int main() {
    int arr[] = {9, 8, 7, 6, 5, 4};

    int num = 6;

    bool exists = std::count(std::begin(arr), std::end(arr), num) > 0;

    if (exists) {
        std::cout << "Found";
    } else {
        std::cout << "Not Found";
    }

    return 0;
}

Output:

Found
Loading script...
codechachaCopyright ©2019 codechacha