[C++] 배열에서 요소의 Index 찾기

배열에 특정 요소가 있는지 찾고 그 요소의 Index를 알아내는 방법을 소개합니다.

1. find(), distance()를 이용한 방법

std::find(first, last, value)는 배열의 first와 last 사이에서 value를 찾고 iterator를 리턴합니다. 배열에 찾는 요소가 없을 때는 배열의 끝을 리턴하며, std::end()와 같은 값을 갖습니다.

std::distance(first, last)는 배열에서 first와 last의 거리를 리턴하며, first를 배열의 시작, last를 찾은 요소의 iterator를 전달하면 찾은 요소의 Index를 계산할 수 있습니다.

아래와 같은 코드로 배열에 특정 요소를 찾고 Index를 가져올 수 있습니다.

#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 << std::endl;
    } else {
        std::cout << "Not Found";
    }

    return 0;
}

Output:

Found, Index: 3

2. 반복문을 이용한 방법

for 반복문으로 순회하면서 요소를 찾을 수 있으며, 이 때 Index도 알 수 있습니다.

#include <iostream>
#include <algorithm>

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

    int num = 6;
    int size = sizeof(arr) / sizeof(*arr);
    for (int i = 0; i < size; i++) {
        if (arr[i] == num) {
            std::cout << "Found, Index: " << i << std::endl;
            break;    
        }
    }

    return 0;
}

Output:

Found, Index: 3
Loading script...
codechachaCopyright ©2019 codechacha