C++程序 去除数组中指定的元素并进行排序

C++程序 去除数组中指定的元素并进行排序

C++中,可以使用STL中的算法对数组进行排序。但是有时候需要去除数组中指定的元素,再进行排序。本文将介绍如何在C++程序中实现这个功能。

需求说明

假设有一个整型数组,需要去除其中所有的奇数,并将剩余的偶数元素按照从小到大的顺序排序。

假设数组元素为:int arr[]={6,2,15,20,7,8,31,5,10,19};

期望输出结果为: 2 6 8 10 20

解题步骤

移除元素

可以使用STL中的remove_if()函数来实现。

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool is_odd(const int &val)
{
    return (val % 2) == 1;
}
int main()
{
    int arr[]={6,2,15,20,7,8,31,5,10,19};
    vector<int> vec(arr, arr +10);
    //删除奇数元素
    auto it_end = remove_if(vec.begin(), vec.end(), is_odd);
    //显示计算结果
    for (auto it = vec.begin(); it != it_end; it++)
    {
         std::cout << *it << " ";
    }
    return 0;
}

运行后,输出结果为:2 6 20 8 10。

排序

删除元素后,可以使用STL中的sort()函数来完成排序。

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool is_odd(const int &val)
{
    return (val % 2) == 1;
}
int main()
{
    int arr[]={6,2,15,20,7,8,31,5,10,19};
    vector<int> vec(arr, arr +10);
    //删除奇数元素
    auto it_end = remove_if(vec.begin(), vec.end(), is_odd);
    //排序
    sort(vec.begin(), it_end);
    //显示计算结果
    for (auto it = vec.begin(); it != it_end; it++)
    {
         std::cout << *it << " ";
    }
    return 0;
}

运行后,输出结果为:2 6 8 10 20。

现在已成功将数组中的奇数元素删除,剩下的偶数元素按照从小到大的顺序排序。

完整代码

#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
bool is_odd(const int &val)
{
    return (val % 2) == 1;
}
int main()
{
    int arr[]={6,2,15,20,7,8,31,5,10,19};
    vector<int> vec(arr, arr +10);
    //删除奇数元素
    auto it_end = remove_if(vec.begin(), vec.end(), is_odd);
    //排序
    sort(vec.begin(), it_end);
    //显示计算结果
    for (auto it = vec.begin(); it != it_end; it++)
    {
         std::cout << *it << " ";
    }
    return 0;
}

结论

使用C++语言的STL中的算法,可以方便地去除数组中指定的元素,并对数组进行排序。本文介绍了如何删除整型数组中的奇数元素,再按照从小到大的顺序排序剩余的偶数元素。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程

C++ 示例