c++ - 如何比较同一对象的两个 vector 并获取其他元素

标签 c++ vector

我想比较两个对象 vector 元素并相应地获取同一对象的其他 vector 元素。例如物体有一个 vector ; foo1.a=[4 2 1 3] foo2.a=[2 1 4] 我想找到相同的元素,然后相应地获取其他 vector 包含,例如 foo1.b=[8 8 2 10]foo2.b=[8 2 8]根据我从 foo.a 获得的调查结果。我尝试比较循环中的两个 vector ,然后得到相同的 vector ,但失败了。

最佳答案

给定两个 vector :

std::vector<int> v1; // {4, 2, 1, 3};
std::vector<int> v2; // {2, 1, 4};

首先,sort两个 vector ,以便轻松找到共同元素:

std::sort(v1); // {1, 2, 3, 4}
std::sort(v2); // {1, 2, 4}

使用set_intersection寻找共同元素:

std::vector<int> vi;
std::set_intersection(v1.begin(), v1.end(), v2.begin(), v2.end(), vi.begin()); // {1, 2, 4}

使用set_difference寻找独特的元素:

std::vector<int> vd;
std::set_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), vd.begin()); // {3}

关于c++ - 如何比较同一对象的两个 vector 并获取其他元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14888951/

相关文章:

c++ - vector <字符串>或 vector < vector <字符>>?

c++ - 为什么当我创建一个包含 N 个对象的 vector 时,CTOR 没有被调用 N 次?

c++ - 声明/定义作为 C 和 C++ 中的语句

c++ - 我如何使用 std::rotate 来旋转第一个成员为 const 的对数组?

c++ - 在 CPP 中制作 vector 三元组的简单方法

c++ - 性能崩溃 C++(std vector bad_allocation)

c++ - C++ 中复 vector 与实 vector 的二维卷积

c++ - 指数生成器 c++,有时返回 inf

c++ - 当我从线程 B 读取相同的变量时,我可以从线程 A 写入一个变量吗?

c++ - 如何在类定义中调用指针成员函数?