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 开始)。