c++ - 是否有 STL 函数可以将 C 风格的数组拆分/拼接成更小的数组?

标签 c++ arrays stl

假设我有一个 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/

相关文章:

c++ - 在 std::map 中使用结构作为值时出现运行时错误?

c++ - 覆盖时的 GCC 弃用消息

php - 将 MySQL 集结果存储在 PHP session 数组中以减少数据库查找

c++ - : Insert pair into multimap, 其中一种类型如何是抽象的?

c++ - 平面和 phong 着色问题

c++ - Qt 中未捕获异常

c - 如何更改 C 中二维数组的内容?

php - 引用 - 这个错误在 PHP 中意味着什么?

c++ - 多索引容器

c++ - std::map::erase(it++) 是否维护指向 map 中下一个元素的有效迭代器?