📅  最后修改于: 2023-12-03 15:06:35.752000             🧑  作者: Mango
在C++编程中,经常需要从数组中选择出特定的元素,比如最大值、最小值、特定的值等。本文将介绍如何通过程序实现这些操作。
选择一个数组中的最大值和最小值是最基本的操作。C++标准库中提供了相应的函数max_element和min_element来实现这个功能。
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int arr[] = { 1, 5, 3, 2, 4 };
int n = sizeof(arr) / sizeof(arr[0]);
int* maxElement = max_element(arr, arr + n);
int* minElement = min_element(arr, arr + n);
cout << "Max Element = " << *maxElement << endl;
cout << "Min Element = " << *minElement << endl;
return 0;
}
上述代码中,使用max_element函数可以选择数组中的最大值,使用min_element函数可以选择数组中的最小值。max_element和min_element函数均使用迭代器,第一个参数是要选择的数组的开头,第二个参数是要选择的数组的结尾。
如果需要选择数组中满足特定条件的元素,可以使用STL库中的find_if函数。
#include <iostream>
#include <algorithm>
using namespace std;
bool isOdd(int i) { return ((i % 2) == 1); }
int main()
{
int arr[] = { 1, 5, 3, 2, 4 };
int n = sizeof(arr) / sizeof(arr[0]);
int* oddElement = find_if(arr, arr + n, isOdd);
cout << "oddElement = " << *oddElement << endl;
return 0;
}
上述代码中,使用find_if函数可以选择数组中第一个满足条件的元素。第一个参数是要选择的数组的开头,第二个参数是要选择的数组的结尾,第三个参数是一个函数指针,代表着所要选择的元素满足的条件。
如果需要选择满足特定条件的元素的数量,可以使用STL库中的count_if函数。
#include <iostream>
#include <algorithm>
using namespace std;
bool isOdd(int i) { return ((i % 2) == 1); }
int main()
{
int arr[] = { 1, 5, 3, 2, 4 };
int n = sizeof(arr) / sizeof(arr[0]);
int cnt = count_if(arr, arr + n, isOdd);
cout << "Number of odd elements = " << cnt << endl;
return 0;
}
上述代码中,使用count_if函数可以选择数组中满足条件的元素的数量。第一个参数是要选择的数组的开头,第二个参数是要选择的数组的结尾,第三个参数是一个函数指针,代表着所要选择的元素满足的条件。
如果需要选择满足特定条件的元素并存储在另一个数组中,可以先使用copy_if函数将选择的元素复制到一个容器中,然后在将这个容器中的元素转换成数组。
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;
bool isOdd(int i) { return ((i % 2) == 1); }
int main()
{
int arr[] = { 1, 5, 3, 2, 4 };
int n = sizeof(arr) / sizeof(arr[0]);
vector<int> v(n);
auto it = copy_if(arr, arr + n, v.begin(), isOdd);
v.resize(distance(v.begin(), it));
int* newArr = new int[v.size()];
copy(v.begin(), v.end(), newArr);
// print the new array
for (int i = 0; i < v.size(); i++) {
cout << newArr[i] << " ";
}
cout << endl;
delete[] newArr;
return 0;
}
上述代码中,使用copy_if函数将选择的元素复制到一个vector容器中,然后将vector容器中的元素复制到一个新的数组中。使用vector容器的好处是不需要预先知道选择元素的数量,而且vector容器会自动管理分配的内存空间。