Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Posuti
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 2
#1

Алгоритм std::set_union - C++

02.12.2013, 20:23. Просмотров 761. Ответов 2
Метки нет (Все метки)

Добрый вечер, попалась задача на данный алгоритм,библиотека <algorithm> подключена. Метод класса вызывается вот таким образом,
C++
1
 pe.plansUnion(pe2);
,где pe, pe2-объекты класса PlanEducation, в каждом из них есть поле vector<subject> discipls, но тут, видимо, это не важно.

Важно вот, что:

C++
1
2
3
4
5
6
7
8
9
10
void PlanEducation::plansUnion(const PlanEducation& otherPlan){
     vector<subject> disciplsUnion;
     set_union(discipls.begin(),discipls.end(),otherPlan.discipls.begin(),otherPlan.discipls.end(),disciplsUnion);
 
 
      for(vector<subject>::iterator itr = disciplsUnion.begin(); itr != disciplsUnion.end(); ++itr){
         cout << *itr << endl;
             }
             
}
Почему данная функция не работает, ведь по шаблону вроде бы всё правильно? Заранее спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 20:23     Алгоритм std::set_union
Посмотрите здесь:

C++ std::ios::hex или std::ios.hex
std::sort + std::lower_bound C++
C++ std::endl; и std::cout"/n"; - одно и то же?
std::map (заменить цикл на грамотный алгоритм) C++
C++ Как кинуть исключение std::locale::global(std::locale("");
В чем отличие алгоритмов set_union и merge? C++
C++ Std::mutex и std::recursive_mutex
C++ Ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc
Ошибка terminate called after throwing an instance of 'std::bad_alloc' what(): std::bad_alloc C++
Std::atomic vs std::mutex C++
Std::move stl-алгоритм C++
C++ Почему повторяющиеся символы заданной строки не выводятся на консоль? (алгоритм std::adjacent_find)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DiffEreD
 Аватар для DiffEreD
1425 / 762 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.12.2013, 22:19     Алгоритм std::set_union #2
Ну, возможно, инсертить надо: std::back_inserter(disciplsUnion)).
В примере же все понятно написано: std::set_union
Posuti
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 2
04.12.2013, 18:13  [ТС]     Алгоритм std::set_union #3
Спасибо за попытку, но, к сожалению, не работает даже так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void PlanEducation::plansUnion(const PlanEducation& otherPlan){
     vector<subject> disciplsUnion;
     vector<subject>::iterator dUIt;
 
 
     dUIt = std::set_union(discipls.begin(),discipls.end(),otherPlan.discipls.begin(),otherPlan.discipls.end(),std::back_inserter(disciplsUnion));
     disciplsUnion.resize(dUIt-disciplsUnion.begin());
 
 
      for(dUIt = disciplsUnion.begin(); dUIt != disciplsUnion.end(); ++dUIt){
         cout << *dUIt << endl;
             }
             
}
Добавлено через 23 часа 51 минуту
проблема решена, нужна была переграузка оператора сравнения,
C++
1
2
3
4
     comparatorForClasses cfc;
 
 
     std::set_union(discipls.begin(),discipls.end(),otherPlan.discipls.begin(),otherPlan.discipls.end(),std::inserter(disciplsUnion, disciplsUnion.begin()), cfc);
Yandex
Объявления
04.12.2013, 18:13     Алгоритм std::set_union
Ответ Создать тему
Опции темы

Текущее время: 08:48. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru