如何比较2个向量并根据比较创建单独的向量

Sam*_*son 1 c++ algorithm vector

我期待在创建一种算法,将比较2个载体(v1,v2),并创建新的矢量v3,将持有之间不共享的值v1v2.

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main(int args[])
{
vector<int> v1 = { 1,2,3,4,5,6,7,8,9 };
vector<int> v2 = { 1,2,6 };
vector<int> v3; //V3 should equal = {3,4,5,7,8,9}.

return 0;
}
Run Code Online (Sandbox Code Playgroud)

矢量将始终排序.

Nat*_*ica 6

如果在您的示例中,范围已排序,则可以使用std::set_symmetric_difference.它将返回两个范围之间不共享的所有元素.使用您将使用的示例

std::set_symmetric_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), std::back_inserter(v3));
Run Code Online (Sandbox Code Playgroud)

所以把它们放在一起我们有

int main()
{
    std::vector<int> v1 = { 1,2,3,4,5,6,7,8,9 };
    std::vector<int> v2 = { 1,2,6 };
    std::vector<int> v3; //V3 should equal = {3,4,5,7,8,9}.

    std::set_symmetric_difference(v1.begin(), v1.end(), v2.begin(), v2.end(), std::back_inserter(v3));

    for (auto e : v3)
        std::cout << e << " ";

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

输出:

3 4 5 7 8 9
Run Code Online (Sandbox Code Playgroud)

Live example