📌  相关文章
📜  使用C++中的STL查找可以被N整除的数组元素(1)

📅  最后修改于: 2023-12-03 15:06:52.205000             🧑  作者: Mango

使用C++中的STL查找可以被N整除的数组元素

当我们需要查找数组中所有可以被N整除的元素时,可以使用STL中的find_if算法配合lambda表达式实现。

代码示例

下面是一个示例程序,该程序使用C++11中的lambda表达式和STL中的find_if算法查找可以被3整除的数组元素。

#include <iostream>
#include <algorithm>
#include <vector>

int main() {
    std::vector<int> arr = { 3, 4, 6, 9, 12, 15, 18, 21 };
    int N = 3;
    
    auto i = std::find_if(arr.begin(), arr.end(), [=](int e) {
        return e % N == 0;
    });
    
    while (i != arr.end()) {
        std::cout << *i << " ";
        i = std::find_if(++i, arr.end(), [=](int e) {
            return e % N == 0;
        });
    }
    
    return 0;
}

代码解释:

  1. 创建一个整数型数组arr,其中包含需要查找的元素。
  2. 定义一个变量N,用于保存整除的数。
  3. 使用find_if算法查找第一个可以被N整除的元素,使用lambda表达式实现对元素的判断,并将结果保存在变量i中。
  4. 使用while循环,在数组中查找所有可以被N整除的元素,直到数组末尾。
  5. 在循环中,先输出找到的元素,再使用find_if算法查找下一个可以被N整除的元素,直到找到数组末尾。
结果输出

运行以上代码,输出结果如下:

3 6 9 12 15 18 21
总结

通过STL中的find_if算法和lambda表达式,我们可以方便地查找数组中满足条件的元素。这种方法在处理大型数组时特别有用,能够快速地查找需要的元素,提高程序效率。