Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/5: Рейтинг темы: голосов - 5, средняя оценка - 5.00
HardLogin
53 / 53 / 2
Регистрация: 20.01.2013
Сообщений: 817
Записей в блоге: 1
1

Объединить два контейнера set

03.07.2016, 14:19. Просмотров 1039. Ответов 7
Метки нет (Все метки)

У меня есть два сета, их надо как то обьеденить в один сет. Как это сделать? Вот мой код, он выдает ошибку - ругается на поле с merge.
C++
1
2
3
4
5
6
7
8
9
10
11
12
int main()
{
    //ios_base::sync_with_stdio(false);
    //cin.tie(NULL);
    set <int> s1, s2, s3;
    s1.insert(2);s1.insert(3);s1.insert(2);
    s2.insert(3);s2.insert(2);s2.insert(1);
 
    merge(all(s1), all(s2), s3.begin());
 
    return 0;
}
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.07.2016, 14:19
Ответы с готовыми решениями:

Сравнить два контейнера set
Всем добрый вечер . Как сравнить два контейнера set? Допустим: set...

Итератор контейнера set
Здравствуйте! Каким образом можно изменить значение итератора set на n (кроме...

Передача контейнера set в функцию
Всем здравствуйте! Мне нужно написать функцию которая будет выводить всю...

Свой компаратор для контейнера set
Здравствуйте! Код следующий (комменты): #include &lt;stdlib.h&gt; #include...

Как достать указатель на объект из контейнера set
Имеется вот такой код #include &quot;stdafx.h&quot; #include &lt;string&gt; #include...

7
Armatus
53 / 53 / 45
Регистрация: 24.03.2016
Сообщений: 377
Завершенные тесты: 4
03.07.2016, 14:28 2
а что такое merge? зачем это радость?
C++
1
2
    set <int> s1, s2, s3;
    copy(s1.begin(), s1.end(), s2.end());
Должен копироваться первый set в конец второго ( а потом по идеи если это сэт, то оно все само должно отсортироваться )

P.S. copy() - предназначен для копирования данных из одного контейнера в другой. Первые два аргумента-итератора представляют диапазон, которые следует скопировать, а последний аргумент итератор-местоположение куда копируется первый элемент.
1
HardLogin
53 / 53 / 2
Регистрация: 20.01.2013
Сообщений: 817
Записей в блоге: 1
03.07.2016, 14:42  [ТС] 3
У меня выдает ошибку:
f:\vs\vc\include\xutility(2144): error C3892: _Dest: невозможно присваивать значения переменной, которая объявлена как константа
0
zss
Модератор
Эксперт С++
7186 / 6681 / 4230
Регистрация: 18.12.2011
Сообщений: 17,631
Завершенные тесты: 1
03.07.2016, 14:44 4
Armatus, не получится.
Только так:
C++
1
2
    for(set<int>::iterator p=s1.begin();p!=s1.end();++p)
        s2.insert(*p);
1
HardLogin
53 / 53 / 2
Регистрация: 20.01.2013
Сообщений: 817
Записей в блоге: 1
03.07.2016, 14:46  [ТС] 5
merge функция которая соеденяет два отсортированых вектора и записывает результат в последний параметр
0
DrOffset
8142 / 4723 / 1154
Регистрация: 30.01.2014
Сообщений: 7,693
03.07.2016, 14:51 6
Лучший ответ Сообщение было отмечено HardLogin как решение

Решение

HardLogin,
C++
1
2
3
4
5
6
    set <int> s1, s2, s3;
    s1.insert(2);s1.insert(3);s1.insert(2);
    s2.insert(3);s2.insert(2);s2.insert(1);
 
    s3.insert(s1.begin(), s1.end());
    s3.insert(s2.begin(), s2.end());
1
HardLogin
53 / 53 / 2
Регистрация: 20.01.2013
Сообщений: 817
Записей в блоге: 1
03.07.2016, 15:02  [ТС] 7
оо не знал что так можно, то что надо. спасибо
0
Nosey
1350 / 401 / 144
Регистрация: 22.10.2014
Сообщений: 863
Завершенные тесты: 2
03.07.2016, 19:05 8
HardLogin,
Сэты лучше мерджить так:
C++
1
2
3
4
5
6
7
8
9
set <int> s1, s2, s3;
    s1.insert(2);s1.insert(3);s1.insert(2);
    s2.insert(3);s2.insert(2);s2.insert(1);
    s3.insert(s1.begin(), s1.end());
    auto it = s3.begin();
    for (auto& v : s2)
    {
        it = s3.insert(it, v);
    }
0
03.07.2016, 19:05
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.07.2016, 19:05

Использование контейнера set для создания словаря
Всем привет. Прошу помощи с программой. Само задание: Написать программу...

Шаблон как тип контейнера std::set
template&lt;class T&gt; int func(T&amp;, int); typedef std::ostream_iterator&lt;int&gt;...

Считать из файла 2 строки с числами в 2 контейнера set
Здравствуйте! Помогите, как считать из файла последовательно 2 строки с...


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

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

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