我不明白如何正确使用set_difference
I don't understand how to use set_difference correctly
在任务中,据说有必要从数组中获取最大元素的"值"。然后应该将其与第二个数组进行比较,并应排除重复项。
在任务中,有必要在向量中使用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))
相关文章:
- Difference in displaying cv2 Mat
- 为什么我无法更改"set<set>"循环中的值<int>
- 对于set上的循环-获取next元素迭代器
- 在声明中合并两个常量"std::set"(不是在运行时)
- 有没有办法对std::unordered_set、std::unrdered_map、std::set、std::map
- 将 std::set 与基于键的比较器一起使用
- 如何使用set实现无序数据结构?
- 使用运算符调用 void 函数时出错<set>
- 修改"std::set"中用户定义类型的值
- 生成提升::hana::set 的常量表达式问题
- 如何在构造函数参数中初始化"std::set"?
- 如何使用 lower_bound/upper_bound 从 std::set 获取索引号?
- 如何在 C++ 中转发声明 std::set?
- 重构使用动态强制转换的 std::set 的比较运算符
- set::find 查找不存在的元素
- 为什么 std::set.erase(first, last) 会影响从中获取 (first, last) 的容器?
- 将 std:set<int32_t> 复制到 std::set <uint32_t>的好方法
- 错误 C2676:std::set::const_iterator 没有运算符 + 函数?
- std::set 是否将对象连续存储在内存中?
- 是否有一个 std::set 函数来确定不超过数字 x 的最大元素?