在任务中,据说有必要从数组中获取最大元素的“值”。然后将其与第二个数组进行比较,并排除重复项。
在该任务中,有必要在vector中使用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可以正常工作,则最后一个条件应返回“成功”。
答案 0 :(得分:6)
set_difference
的第5 个参数是将算法结果写入的参数。
您传入了C_vec.begin()
,它是指向 empty 向量的迭代器。写入空向量的迭代器是未定义的行为。
您在这里遇到了几个问题,但是针对此特定问题的一种解决方案是将C_vec.begin()
替换为insert_iterator
:
inserter(C_vec, begin(C_vec))