3

2つのオブジェクトのベクトル要素を比較し、それに応じて同じオブジェクトの他のベクトル要素を取得したいと思います。たとえば、オブジェクトにはベクトルがあります。 同じ要素を見つけて、それに応じfoo1.a=[4 2 1 3] foo2.a=[2 1 4] て他のベクトルの包含を取得したいと思います。ループ内の2つのベクトルを比較して同じものを取得しようとしましたが、失敗しました。 foo1.b=[8 8 2 10]foo2.b=[8 2 8]foo.a

4

1 に答える 1

4

与えられた 2 つのベクトル:

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

まず、sort共通要素を見つけやすいように 2 つのベクトルを示します。

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 に答える