📅  最后修改于: 2023-12-03 15:37:34.398000             🧑  作者: Mango
在C ++中,我们可以使用STL中的算法来查找数组中的奇数和偶数。STL提供了一个名为partition
的函数,它可以将一个容器分成两部分,其中一个部分满足给定的条件,而另一部分不满足。
在这个例子中,我们将使用partition
函数来将数组分成奇数元素和偶数元素,然后将它们打印出来。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> nums = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
auto is_odd = [](int n){return n % 2 == 1;};
auto iter = partition(nums.begin(), nums.end(), is_odd);
cout << "Odd numbers: ";
for (auto i = nums.begin(); i != iter; ++i) {
cout << *i << " ";
}
cout << "\nEven numbers: ";
for (auto i = iter; i != nums.end(); ++i) {
cout << *i << " ";
}
return 0;
}
在上面的代码中,我们首先声明一个vector<int>
,其中包含1到10的整数。然后,我们定义一个lambda函数is_odd
,它接受一个整数并返回一个bool值,表示该数是否为奇数。
接下来,我们调用partition
函数来将数组分成奇数和偶数两部分。该函数的第一个参数是迭代器的起始位置,第二个参数是迭代器的结束位置,第三个参数是一个谓词函数,用于判断哪些元素应该属于第一部分。在这种情况下,我们使用is_odd
函数作为谓词。
partition
函数将返回一个迭代器,指向第二部分的第一个元素。使用这个迭代器,我们可以打印数组中的奇数和偶数元素。
在上面的代码中,我们使用cout
语句打印了所有的奇数和偶数元素。输出为:
Odd numbers: 1 3 5 7 9
Even numbers: 2 4 6 8 10
使用STL中的partition
算法可以方便地将一个容器分成满足某个条件和不满足某个条件的两部分。在本例中,我们将其用于查找一个数组的奇数和偶数元素。