我不明白如何正确使用set_difference



在任务中,据说有必要从数组中获取最大元素的"值"。然后应该将其与第二个数组进行比较,并应排除重复项。

在任务中,有必要在向量中使用partial_sort_copy和set_difference。

问题是,当您启动程序时,即使没有显示出错误的是什么,这就是为什么我在这里写

我查看了几个使用此功能的示例的网站,但是我使用了所有内容,并且不太了解它不起作用并崩溃。

#include<iostream>
#include<vector>
#include <algorithm>
using namespace std;
int main() 
{
    int value = 5;
    int A_ints[] { 1, 4, 12, 5, 1, 4, 6, 9, 0, 3 };
    vector<int> A_vec(value);
    vector<int> B_vec { 13, 12, 11, 10 };
    vector<int> C_vec;
    vector<int> D_vec {9, 6, 5, 4};

    partial_sort_copy(A_ints, A_ints + 9, A_vec.begin(), A_vec.end(), greater<int>());
    set_difference(A_vec.begin(), A_vec.end(), B_vec.begin(), B_vec.end(), C_vec.begin(), greater<int>());

    if (С_vec == D_vec)
         cout << "Success n";
    else
         cout << "Failure n";
    system("pause");
    return 0;
}

结果,如果set_difference可以正常工作,那么最后一个条件应返回"成功"。

set_difference的5 th 参数是将算法结果写入的参数。

您已通过C_vec.begin()传递,这是指向 empty 向量的迭代器。写入空矢量的迭代器是不确定的行为。

您在这里有几个问题,但是解决此特定问题的一种解决方案是用insert_iterator替换C_vec.begin()

inserter(C_vec, begin(C_vec))

最新更新