C++의 다중 항목 검색 (Multiple-Item Search) 알고리즘- 설명, 예제 및 코드

다중 항목 검색 알고리즘은 목록에서 특정 요소의 모든 항목을 찾는 데 사용됩니다. 단일 항목 검색 알고리즘과 달리 이 접근 방식은 대상 요소의 여러 항목을 추적하고 위치 목록을 반환합니다.

작동 방식

  1. 목록의 처음부터 시작하십시오.
  2. 목록의 각 요소를 반복합니다.
  3. 현재 요소를 대상 값과 비교합니다.
  4. 현재 요소가 대상 값과 같으면 해당 위치를 기록합니다.
  5. 다음 요소로 계속 진행하고 3~4단계를 반복합니다.
  6. 전체 목록을 반복한 후 기록된 위치 목록을 반환합니다.

정수 목록을 고려하고 숫자 23의 모든 항목을 찾으려고 합니다.

목록: {12, 23, 45, 23, 56, 23, 89, 90}

  1. 처음부터 시작: 12. 원하는 번호가 아닙니다.
  2. 다음 요소로 이동: 23. 일치 항목을 찾았고 위치를 1로 기록합니다.
  3. 다음 요소로 이동: 45. 원하는 번호가 아닙니다.
  4. 다음 요소로 이동: 23. 일치 항목을 찾았고 위치를 3으로 기록합니다.
  5. 다음 요소로 이동: 56. 원하는 숫자가 아닙니다.
  6. 다음 요소로 이동: 23. 일치 항목을 찾았고 위치를 5로 기록합니다.
  7. 다음 요소로 이동: 89. 원하는 번호가 아닙니다.
  8. 다음 요소로 이동: 90. 원하는 숫자가 아닙니다.
  9. 반복 후 위치 목록을 반환합니다: [1, 3, 5].

C++의 예제 코드

#include <iostream>  
#include <vector>  
  
std::vector<int> multipleItemSearch(const std::vector<int>& arr, int target) {  
    std::vector<int> positions;  
  
    for(int i = 0; i < arr.size(); ++i) {  
        if(arr[i] == target) {  
            positions.push_back(i);  
        }  
    }  
  
    return positions;  
}  
  
int main() {  
    std::vector<int> numbers = {12, 23, 45, 23, 56, 23, 89, 90};  
    int target = 23;  
  
    std::vector<int> result = multipleItemSearch(numbers, target);  
  
    std::cout << "Occurrences of " << target << " found at positions: ";  
    for(int pos: result) {  
        std::cout << pos << ";  
    }  
    std::cout << std::endl;  
  
    return 0;  
}  

주어진 예에서 multipleItemSearch 함수는 정수 목록에서 숫자 23의 모든 항목을 찾는 데 사용됩니다. 결과는 모든 발생 위치를 포함하는 벡터가 됩니다(위치는 0부터 시작).