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

Не работает объединение двух векторов - C++

Восстановить пароль Регистрация
 
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
07.11.2012, 20:45     Не работает объединение двух векторов #1
есть такой код:
C++
1
set_union(p[i].elems->begin(), p[i].elems->end(), p[j].elems->begin(), p[j].elems->end(), tst.begin());
где tst и p[i].elems есть vector<string>.

При компиляции получаю сообщение, что итератор вектора не увеличиваемый (vector iterator not incrementable). Что можно сделать в данной ситуации?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
07.11.2012, 22:31     Не работает объединение двух векторов #2
Какие нужно объединить вектора?
p[i] с чем?
diagon
Higher
 Аватар для diagon
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.11.2012, 22:39     Не работает объединение двух векторов #3
Цитата Сообщение от iRomul Посмотреть сообщение
Что можно сделать в данной ситуации?
Показать более полный код с типами.
Ну и сразу же замечание - вы точно знаете размер результата? Если нет, то в качестве выходного итератора стоит передавать, к примеру, std::back_inserter.
Цитата Сообщение от iRomul Посмотреть сообщение
p[i].elems есть vector<string>
А зачем тогда
C++
1
->
Sor
35 / 35 / 0
Регистрация: 24.11.2011
Сообщений: 309
07.11.2012, 22:47     Не работает объединение двух векторов #4
объединение двух объектов класса? а сортировка есть?
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
07.11.2012, 23:03  [ТС]     Не работает объединение двух векторов #5
Цитата Сообщение от Sor Посмотреть сообщение
объединение двух объектов класса? а сортировка есть?
Есть

Проблему решил так:
C++
1
p[i].elems->begin(), p[i].elems->end(), p[j].elems->begin(), p[j].elems->end(), back_inserter(*tst)
Только непонятно, что такое back_inserter(). Можете пояснить?
diagon
Higher
 Аватар для diagon
1921 / 1187 / 49
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
07.11.2012, 23:13     Не работает объединение двух векторов #6
Цитата Сообщение от iRomul Посмотреть сообщение
Только непонятно, что такое back_inserter(). Можете пояснить?
Если не заморачиваться с реализацией, то он просто вставляет элементы в вектор через push_back.
DU
1478 / 1054 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
07.11.2012, 23:21     Не работает объединение двух векторов #7
как-то странно. проблемы были в коде:
... tst.begin());
а решилось все
... back_inserter(*tst)

похоже что tst - указатель на контейнер и в первом варианте должно было быть ... tst->begin());
но описание ошики смущает. впрочем именно вставка в конец скорее всего и нужна, т.к. размер объединенных векторов врятли известен перед объединением.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.11.2012, 23:28     Не работает объединение двух векторов
Еще ссылки по теме:

Генерация текста из двух векторов C++
C++ Определить объединение из двух полей. Первое поле - массив из двух байт, второе - слово
C++ Определить объединение из двух полей Первое поле - массив из двух байт, второе - слово
C++ Объединение двух векторов
C++ Сортировка двух векторов одновременно

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

Или воспользуйтесь поиском по форуму:
iRomul
 Аватар для iRomul
158 / 99 / 11
Регистрация: 17.10.2012
Сообщений: 474
Завершенные тесты: 1
07.11.2012, 23:28  [ТС]     Не работает объединение двух векторов #8
DU, дело в том, что после создания 1 поста я еще посидел и немного переделал. Теперь tst есть указатель на vector<string>. По этому так и вышло. А back_inserter() и правда стал решением. Спасибо всем!
Yandex
Объявления
07.11.2012, 23:28     Не работает объединение двух векторов
Ответ Создать тему
Опции темы

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