Проблемы с set_union и set_intersection - C ++
-
26-12-2019 - |
Вопрос
Я в настоящее время работаю над проектом, связанным с установленными расчетами.Я использую функции set_union и set_ restersection для расчета объединения и пересечения наборов.Мои переменные:
int AunionB[8];
int AunionC[7]; // define AunionC
int BunionD[9]; // define BunionD
int AintersectB[4]; // define AintersectB
int AintersectC[3]; // define AintersectC
set<int> finalUnion; // final union of A, B, C, D
set<int> finalIntersection; // final intersection of A, B, C, D
.
Это профсоюзы и пересечения, соответственно, из четырех наборов: seta, setb, setc и setd.Моя функция Set_union выглядит следующим образом:
set_union(AunionC, AunionC+7, BunionD, BunionD+9, finalUnion.begin());
.
и моя функция set_intersection следующая:
set_intersection(AintersectB, AintersectB+4, AintersectC,
AintersectC+3, finalIntersection.begin());
.
Когда я компилируюсь, я получаю ошибку «требуется отсюда», смысл которого я не уверен.Может кто-нибудь, пожалуйста, помогите мне с этим?Я считаю, что это что-то связано с функциями Set_union и Set_Intersecters и их параметрами, но я не уверен.
Решение
Использовать вместо этого
#include <iterator>
//...
set_union( AunionC, AunionC+7, BunionD, BunionD+9,
std::inserter( finalUnion, finalUnion.begin() ) );
.
и
set_intersection(AintersectB, AintersectB+4, AintersectC,
AintersectC+3, std::inserter( finalIntersection, finalIntersection.begin() ) );
.
демонстративный пример
#include <iostream>
#include <algorithm>
#include <iterator>
#include <set>
int main()
{
int a[] = { 1, 3, 5 };
int b[] = { 0, 2, 4, 6 };
std::set<int> s;
std::set_union( std::begin( a ), std::end( a ),
std::begin( b ), std::end( b ),
std::inserter( s, s.begin() ) );
for ( int x : s ) std::cout << x << ' ';
std::cout << std::endl;
return 0;
}
.
Вывод -
0 1 2 3 4 5 6
. Не связан с StackOverflow