使用STL算法重新做上面所给的已知题目:将一组整数的最小值替换为它的最大值。输入任意个整数,查找最大值和最小值,然后将最小值更新为最大值,最后再输出变换后的数组。 样例输入 45 89 -2 8 100 样例输出 45 89 100 8 100 提示 可使用vector<int>容器保存数组,使用vector<int>::iterator迭代器记录最大值和最小值下标,调用min_element和max_element查找最值下标,最后使用replace替换最小值为最大值。
时间: 2024-02-25 08:56:07 浏览: 22
好的,以下是使用STL算法实现的代码:
```c++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<int> nums; // 存放输入的整数
int num;
while (cin >> num) {
nums.push_back(num);
}
auto min_it = min_element(nums.begin(), nums.end()); // 查找最小值的迭代器
auto max_it = max_element(nums.begin(), nums.end()); // 查找最大值的迭代器
int max_num = *max_it; // 最大值
int min_num = *min_it; // 最小值
*min_it = max_num; // 将最小值替换为最大值
replace(nums.begin(), nums.end(), min_num, max_num); // 将所有最小值替换为最大值
for (auto i : nums) {
cout << i << " ";
}
cout << endl;
return 0;
}
```
使用示例:
```
输入:45 89 -2 8 100
输出:45 89 100 8 100
```
解释:输入的整数序列为 `45 89 -2 8 100`,最小值为 `-2`,最大值为 `100`。将最小值替换为最大值后得到 `45 89 100 8 100`。