Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

02.12.2013, 20:23. Просмотров 1012. Ответов 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;
             }
             
}
Почему данная функция не работает, ведь по шаблону вроде бы всё правильно? Заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.12.2013, 20:23
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Алгоритм std::set_union (C++):

Алгоритм std::find_end - аналог std::search_n - C++
Есть два семейства стандартных алгоритмов: std::search и std::find_end. Первое семейство предназначено для поиска первого совпадения...

В чем отличие алгоритмов set_union и merge? - C++
Всем привет! Уважаемые форумчане, подскажите пожалуйста, в чем отличие алгоритмов set_union и merge? Выходная последовательность обоих...

Не воспринимает ни std::cout, ни std::cin. Вобщем ничего из std. Также не понимает iostream - C++
Здравствуйте! Я хотел начать изучать язык C++. Набрал литературы. Установил Microsoft Visual C++ 2005 Express Edition. Образ диска...

ошибка error: cannot convert 'std::string {aka std::basic_string<char>}' to 'std::string* {aka std::basic_stri - C++
на вод поступают 2 строки типа string. определить количество вхождений строки 2 в строку 1 ошибка error: cannot convert 'std::string {aka...

Std::move stl-алгоритм - C++
здравствуйте, есть такой код: std::string his = &quot;what the work ?&quot;; std::istringstream isg(his); ...

STL std::set, std::pair, std::make_pair - C++
Я не знаю как описать тему в двух словах, поэтому не обращайте внимание на название темы. Собственно перейдем к нашим баранам: есть...

2
DiffEreD
1434 / 771 / 95
Регистрация: 21.06.2011
Сообщений: 1,740
Записей в блоге: 2
02.12.2013, 22:19 #2
Ну, возможно, инсертить надо: std::back_inserter(disciplsUnion)).
В примере же все понятно написано: std::set_union
0
Posuti
0 / 0 / 0
Регистрация: 02.12.2013
Сообщений: 2
04.12.2013, 18:13  [ТС] #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);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.12.2013, 18:13
Привет! Вот еще темы с ответами:

std::map (заменить цикл на грамотный алгоритм) - C++
Привет! Привожу пример: struct Info { Info() : magicNumber(0), age(0) {} Info(int magicNumber, int age) :...

На основе исходного std::vector<std::string> содержащего числа, создать std::vector<int> с этими же числами - C++
подскажите есть вот такая задача. Есть список . Создать второй список, в котором будут все эти же числа, но не в виде строк, а в виде...

Почему повторяющиеся символы заданной строки не выводятся на консоль? (алгоритм std::adjacent_find) - C++
Никак не могу взять в толк, почему повторяющиеся символы не выводятся на консоль? #include &lt;iostream&gt; #include &lt;string&gt; #include...

(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const& - C++
astxx::manager::connection::connection(std::basic_string&lt;char, std::char_traits&lt;char&gt;, std::allocator&lt;char&gt; &gt; const&amp;, unsigned short); ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru