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

Пересечение контейнеров - C++

Восстановить пароль Регистрация
 
Origamo
0 / 0 / 0
Регистрация: 06.09.2016
Сообщений: 18
Завершенные тесты: 1
08.11.2016, 11:42     Пересечение контейнеров #1
Пытаюсь пересечь контейнеры(чтобы не было повторяющихся элементов),но выдает vector iterators incompatible
,если перед итераторами ничего стоит,а если поставить *,то ничего не происходит,т.е контейнеры равны,а условие не выполняется
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
vector <list_el> A = ptr[b].groups[0].list;
vector <list_el> copy;
vector <list_el>::iterator it = A.begin();
copy.insert(copy.begin(), A.begin(), A.end());
vector <list_el> B = ptr[a].groups[0].list;
vector <list_el>::iterator it1 = B.begin();
vector <list_el>::iterator check = copy.begin();
        for (; it1 != B.end(); it1++)
        {
        for (; check != copy.end(); check++)
        {
            if (it1 == check)
            B.erase(it1);
        }
        }
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2016, 11:42     Пересечение контейнеров
Посмотрите здесь:

C++ Разбор массивов/контейнеров
C++ Использование двух контейнеров из STL
C++ Объединение двух контейнеров
C++ Не осуществляется объединение двух контейнеров
Расширение stl контейнеров C++
Сравнение разных контейнеров C++
C++ Синхронизация контейнеров (STL)
Взаимодействие двух контейнеров объектов C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zss
Модератор
Эксперт С++
 Аватар для zss
5942 / 5547 / 1783
Регистрация: 18.12.2011
Сообщений: 14,165
Завершенные тесты: 1
08.11.2016, 12:47     Пересечение контейнеров #2
Сообщение было отмечено автором темы, экспертом или модератором как ответ
C++
1
2
3
4
5
6
7
8
9
        for (; it1 != B.end(); it1++)
        {
             vector <list_el>::iterator check = copy.begin();
             for (; check != copy.end(); check++)
            {
                   if ( it1->value == check->value) // value - это имя переменной, которая хранится в Вашем списке (замените на правильное)
                         B.erase(it1);
            }
        }
MrGluck
Ворчун
Эксперт С++
 Аватар для MrGluck
4920 / 2663 / 243
Регистрация: 29.11.2010
Сообщений: 7,409
08.11.2016, 12:50     Пересечение контейнеров #3
Чем не подошёл стандартный алгоритм?
http://www.cplusplus.com/reference/a...ic_difference/
Yandex
Объявления
08.11.2016, 12:50     Пересечение контейнеров
Ответ Создать тему
Опции темы

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