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中的算法,可以方便地去除数组中指定的元素,并对数组进行排序。本文介绍了如何删除整型数组中的奇数元素,再按照从小到大的顺序排序剩余的偶数元素。