遍历std::vector<struct> ,将里面有、相同的元素去除
时间: 2024-10-12 07:11:16 浏览: 32
vector和struct
遍历`std::vector<Struct>`并且去除重复元素,可以使用多种方法。这里提供一种常见的做法,使用`std::set`作为中间容器,因为`set`自动去重,然后再将其内容转换回`vector`。
首先,你需要一个结构体`Struct`,假设它有一个成员变量`key`用于唯一标识:
```cpp
struct Struct {
int key;
// 其他成员...
};
```
然后,你可以这样做:
```cpp
std::vector<Struct> inputVector; // 原始vector
// 创建一个set来去重
std::set<int> uniqueKeys; // 或者如果你的Struct有多字段构成唯一键,那就用Struct
// 遍历输入vector
for (const auto& item : inputVector) {
uniqueKeys.insert(item.key); // 插入key到set中,重复的key会被忽略
}
// 然后根据uniqueKeys重建vector
std::vector<Struct> outputVector;
for (const auto& key : uniqueKeys) {
// 这里假设有一个构造函数能从int key创建Struct
outputVector.push_back(Struct{key});
}
// 输出Vector now contains unique elements
```
注意,上述代码只适用于`key`字段是唯一的`Struct`。如果你的结构体还有其他成员,你可能需要调整插入`uniqueKeys`的方式,使其基于整个结构体进行判断。
阅读全文