C++中,两个结构体的vector容器合并,相同的元素去重,请详细举例并注释
时间: 2024-11-09 15:18:22 浏览: 17
在C++中,如果你有两个结构体类型的向量,想要将它们合并并去除重复的元素,可以使用`std::vector`的`insert()`函数以及`std::set`的数据结构来实现,因为`std::set`自动维护元素的唯一性。这里是一个示例:
```cpp
#include <iostream>
#include <vector>
#include <set>
// 假设我们有以下两个结构体
struct Data {
int id;
std::string name;
};
int main() {
// 创建两个结构体的向量
std::vector<Data> vec1 = { {1, "Alice"}, {2, "Bob"}, {3, "Charlie"} };
std::vector<Data> vec2 = { {3, "Charlie"}, {4, "David"}, {5, "Eve"} };
// 使用set来存储唯一的元素
std::set<Data> uniqueSet;
// 遍历第一个向量,并插入到set中,会自动去重
for (const auto& data : vec1) {
uniqueSet.insert(data);
}
// 现在uniqueSet包含了vec1中所有的独特元素
// 将set的内容复制回一个新的vector中
std::vector<Data> mergedVec(uniqueSet.begin(), uniqueSet.end());
// 打印合并后的向量
for (const auto& data : mergedVec) {
std::cout << "ID: " << data.id << ", Name: " << data.name << "\n";
}
阅读全文