C++实现删除vector中相同的元素,并返回相同元素的位置索引
时间: 2024-02-23 20:59:40 浏览: 65
以下是实现删除`vector`中相同元素并返回相同元素位置索引的示例代码:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
std::vector<int> findDuplicateIndices(std::vector<int>& vec) {
std::vector<int> indices;
for (auto it1 = vec.begin(); it1 != vec.end(); ++it1) {
for (auto it2 = std::next(it1); it2 != vec.end(); ++it2) {
if (*it1 == *it2) {
indices.push_back(std::distance(vec.begin(), it2));
vec.erase(it2);
it2--;
}
}
}
return indices;
}
int main() {
std::vector<int> vec = {1, 2, 3, 2, 4, 3, 5};
std::vector<int> indices = findDuplicateIndices(vec);
std::cout << "Duplicate indices: ";
for (auto index : indices) {
std::cout << index << " ";
}
std::cout << std::endl;
std::cout << "Distinct elements: ";
for (auto elem : vec) {
std::cout << elem << " ";
}
std::cout << std::endl;
return 0;
}
```
该函数`findDuplicateIndices`接受一个`vector`参数,并返回一个`vector`,其中包含重复元素的位置索引。该函数使用两重循环遍历`vector`中的每个元素,并在内循环中查找相同的元素。如果找到相同的元素,则将其位置索引添加到分配给`indices`的`vector`中,并使用`erase`函数删除`vector`中的一个副本,以确保不会重复计算。
在主函数中,我们可以使用`findDuplicateIndices`函数查找重复元素的位置索引,并打印出重复位置索引和剩余的不同元素。
阅读全文