📅  最后修改于: 2023-12-03 15:22:18.175000             🧑  作者: Mango
在C ++中,可以使用STL中的algorithm头文件中的一些函数来查找数组中可以被N整除的元素。以下是一些常用的函数:
函数签名:
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;
}
函数签名:
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算法结合使用,以更方便地解决各种问题。