假设我有一个 C 风格的数组 (int numbers[10])。我想将数组拆分为一个奇数数组和一个偶数数组。此外,我想使用谓词来确定数字是否为奇数。
问题:我很好奇 - 是否有可以执行此操作的 STL 函数?
我能找到的最接近的东西是 list::splice,但它不适用于 C 风格的数组并且不采用谓词。
最佳答案
std::partition()会工作。
确实,该页面上的示例 1 将偶数和奇数分开。它是在 vector 上执行的,但没有理由不能在 native 数组上运行。
这是我编写的一个简单示例:
#include <algorithm>
#include <iostream>
int main()
{
int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
auto mid = std::partition(std::begin(a), std::end(a),
[](int n){return n%2;});
std::cout << "Odd: " << std::endl;
for (auto p = std::begin(a); p < mid; ++p)
{
std::cout << *p << std::endl;
}
std::cout << "Even: " << std::endl;
for (auto p = mid; p < std::end(a); ++p)
{
std::cout << *p << std::endl;
}
}
关于c++ - 是否有 STL 函数可以将 C 风格的数组拆分/拼接成更小的数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22412581/