gpt4 book ai didi

c++ - 我不明白如何正确使用 set_difference

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:31:35 25 4
gpt4 key购买 nike

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

任务中需要在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 能正常工作,那么最后一个条件应该返回“成功”。

最佳答案

set_difference 的第 5 个 参数是写入算法结果的参数。

您已经传入 C_vec.begin(),它是一个指向 vector 的迭代器。写入空 vector 的迭代器是未定义的行为。

这里有几个问题,但是针对这个特定问题的一个解决方案是用 insert_iterator 替换 C_vec.begin() :

inserter(C_vec, begin(C_vec))

关于c++ - 我不明白如何正确使用 set_difference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56138478/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com