如何删除列表中不止一个的最大值最小值
时间: 2024-12-08 12:24:58 浏览: 24
要从一个包含多个相同最大值或最小值的列表中删除它们,你可以使用标准库中的`std::remove_if()`算法配合自定义谓词(predicate)。以下是一个简单的示例,演示了如何删除列表中的最大值和最小值:
```cpp
#include <algorithm> // 包含 remove_if 和相关的容器适配器
#include <vector> // 使用 vector 作为例子
// 定义比较函数,用于找出并删除最大值和最小值
bool compareMaxMin(const int& a, const int& b) {
return a == std::max(a, b); // 对于最大值
}
int main() {
std::vector<int> numbers = {5, 10, 10, 15, 5, 20, 10}; // 假设这是你要操作的列表
// 移除所有最大值
numbers.erase(std::remove_if(numbers.begin(), numbers.end(), compareMaxMin), numbers.end());
// 同样地,移除所有最小值
auto min_iter = std::min_element(numbers.begin(), numbers.end());
numbers.erase(min_iter, min_iter + std::count_if(numbers.begin(), numbers.end(), compareMin));
for (const auto& num : numbers) {
std::cout << num << " ";
}
// 结果将是:15 20
return 0;
}
```
这段代码首先定义了一个比较函数`compareMaxMin`,然后用这个函数作为`remove_if()`的谓词,找出并删除列表中的最大值。接着,使用`std::min_element()`找到最小值的位置,再调用`erase()`移除所有最小值。
阅读全文
相关推荐
















