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

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

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

在C ++中,可以使用STL中的algorithm头文件中的一些函数来查找数组中可以被N整除的元素。以下是一些常用的函数:

  1. find_if

函数签名:

template< class InputIt, class UnaryPredicate >
InputIt find_if( InputIt first, InputIt last, UnaryPredicate p );

该函数在指定的范围内查找第一个满足指定条件的元素。使用时需要传入两个迭代器,表示要查找的范围,以及一个谓词函数,用于判断每个元素是否符合条件。

以下是一个使用find_if函数查找可以被3整除的元素的示例代码片段:

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

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    auto it = std::find_if(v.begin(), v.end(), [](int x){ return x % 3 == 0; });
    if (it != v.end()) {
        std::cout << *it << " can be divided by 3." << std::endl;
    } else {
        std::cout << "No element can be divided by 3." << std::endl;
    }
    return 0;
}
  1. copy_if

函数签名:

template<class InputIt, class OutputIt, class UnaryPredicate>
OutputIt copy_if(InputIt first, InputIt last, OutputIt d_first, UnaryPredicate pred);

该函数将值为true的元素从输入范围复制到输出范围。使用时需要传入两个迭代器,表示输入范围和输出范围,以及一个谓词函数,用于判断每个元素是否符合条件。

以下是一个使用copy_if函数复制可以被3整除的元素的示例代码片段:

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

int main() {
    std::vector<int> v = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    std::vector<int> output(v.size());
    auto it = std::copy_if(v.begin(), v.end(), output.begin(), [](int x){ return x % 3 == 0; });
    output.resize(std::distance(output.begin(), it));
    std::cout << "Elements in the array that can be divided by 3: ";
    for (int i : output) {
        std::cout << i << " ";
    }
    std::cout << std::endl;
    return 0;
}

从输出结果可以看到,copy_if函数仅复制符合条件的元素。

以上是两种常用的STL函数来查找数组中可以被N整除的元素。在实际应用中,这些函数可以与其他STL算法结合使用,以更方便地解决各种问题。