编写代码,输入任意个整数,保存到一个vector数据中,使用sort将该vector按照从大到小排序,并排除重复输入项,输出最大的三个数
时间: 2024-09-15 19:03:07 浏览: 39
为了实现这个功能,我们可以使用C++标准库中的`std::vector`、`std::set`以及`std::sort`函数。首先,我们需要存储用户的输入并去除重复项;然后对剩余的元素进行降序排序;最后,取出前三个最大值。这是一个简单的示例:
```cpp
#include <iostream>
#include <vector>
#include <set>
#include <algorithm>
int main() {
std::vector<int> numbers;
int input;
// 输入任意个整数
while (true) {
std::cout << "请输入一个整数(输入-1结束):";
std::cin >> input;
// 如果用户输入-1,停止循环
if (input == -1)
break;
// 添加到vector中并移除重复项
numbers.insert(numbers.end(), input);
}
// 使用set去重并将vector转换回vector<int>
numbers.erase(std::unique(numbers.begin(), numbers.end()), numbers.end());
// 对vector进行降序排序
std::sort(numbers.rbegin(), numbers.rend());
// 输出最大的三个数
std::cout << "最大的三个数是:\n";
for (size_t i = 0; i < 3 && i < numbers.size(); ++i) {
std::cout << numbers[i] << " ";
}
return 0;
}
```
在这个程序中,我们通过`std::cin`获取用户输入,使用`std::set`自动去重,然后再次将结果放入`std::vector`以便于排序。注意,由于我们是从后向前(reverse迭代)进行排序,所以可以直接使用`rbegin()`和`rend()`。
阅读全文