c++ 输入一组数据(不超过1000个),“利用一个新的数组”保存其中唯一的元素出现,按照原顺序输出所有数字的首次出现
时间: 2024-10-28 18:06:31 浏览: 11
C++两个一维数组相加求和
在C++中,为了实现这个功能,你可以使用`std::unordered_set`,因为它支持快速查找并自动去重。下面是一个简单的步骤:
1. 定义一个包含整数的`std::unordered_set`来存储唯一的元素。
2. 遍历输入数组,对于每个元素,如果它不在集合中,就将其添加到集合(同时也添加到结果数组的对应位置,保持原始顺序),如果已经存在,则跳过。
3. 最后,遍历结果数组,输出每个元素及其索引。
以下是示例代码实现:
```cpp
#include <iostream>
#include <vector>
#include <unordered_set>
int main() {
int n;
std::cout << "请输入元素个数(不超过1000): ";
std::cin >> n;
// 结果数组,用于保持元素出现的原始顺序
std::vector<int> result(n, -1);
// 无序集合并记录元素索引
std::unordered_set<int> uniqueSet;
for (int i = 0; i < n; ++i) {
int input;
std::cin >> input;
if (uniqueSet.find(input) == uniqueSet.end()) { // 如果元素未见于集合
result[i] = input; // 将其添加到结果数组
uniqueSet.insert(input); // 添加到集合
}
}
// 输出所有数字的首次出现
for (size_t i = 0; i < n; ++i) {
if (result[i] != -1) {
std::cout << "第" << i+1 << "个元素是: " << result[i] << "\n";
} else {
std::cout << "第" << i+1 << "个元素未出现\n";
}
}
return 0;
}
```
阅读全文