如何找出vector中所有相同的元素已经相同元素的位置
时间: 2024-03-11 16:51:45 浏览: 88
计算vector中所有元素之和
可以使用哈希表来实现,具体步骤如下:
1. 创建一个哈希表,将vector中的元素作为键,将它们在vector中的位置作为值,初始化为空。
2. 遍历vector,对于每个元素,判断它是否在哈希表中出现过。若没有出现过,则将该元素插入哈希表,并将它在vector中的位置作为值。若已经出现过,则将该元素在vector中的位置添加到对应键的值中。
3. 最后遍历哈希表,输出值的长度大于1的键值对,即可得到所有相同的元素及它们在vector中的位置。
下面是示例代码:
```c++
#include <iostream>
#include <vector>
#include <unordered_map>
using namespace std;
int main() {
vector<int> nums = {1, 2, 3, 2, 4, 3};
unordered_map<int, vector<int>> mp;
for(int i = 0; i < nums.size(); i++) {
if(mp.find(nums[i]) == mp.end()) { // 未出现过
mp[nums[i]] = vector<int>(1, i);
} else { // 已经出现过
mp[nums[i]].push_back(i);
}
}
for(auto it = mp.begin(); it != mp.end(); it++) {
if(it->second.size() > 1) {
cout << "Element " << it->first << " occurs at positions: ";
for(int i = 0; i < it->second.size(); i++) {
cout << it->second[i] << " ";
}
cout << endl;
}
}
return 0;
}
```
输出结果为:
```
Element 2 occurs at positions: 1 3
Element 3 occurs at positions: 2 5
```
阅读全文