我想比较两个对象向量元素并相应地获取同一对象的其他向量元素。例如对象有一个向量;
foo1.a=[4 2 1 3] foo2.a=[2 1 4]
我想找到相同的元素,然后相应地获取其他向量包含,例如foo1.b=[8 8 2 10]
并foo2.b=[8 2 8]
根据我从foo.a
. 我试图比较循环中的两个向量,然后得到相同的结果,但我失败了。
问问题
2457 次
1 回答
4
给定两个向量:
std::vector<int> v1; // {4, 2, 1, 3};
std::vector<int> v2; // {2, 1, 4};
首先,sort
两个向量,以便很容易找到共同的元素:
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}
于 2013-02-15T07:50:22.010 回答