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

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

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

Синхронизация map и vector. Iterator not incrementable - C++

10.06.2016, 15:45. Просмотров 475. Ответов 7
Метки нет (Все метки)

День добрый. Надо синхронизровать vector и map, чтобы в них были только одинаковые элементы.
Вот мой код, который выбрасывает ошибку. (Скрин во вложениях). Вопрос: в чем проблема?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void synchronize(map<int, int> *m1, vector<int>* vec1)
{
    map<int, int>::iterator itr_m1;
    map<int, int>::iterator itr2_m1 = m1->begin();
    int* p_vec = vec1->data();
    for (int i = 0; vec1->size(); i++) {
        for (itr2_m1 = m1->begin(); itr2_m1 != m1->end(); itr2_m1++)
        {
            if (itr2_m1->second != p_vec[i])
            {
                m1->erase(itr2_m1);
            }
 
        }
        itr2_m1 = m1->begin();
    }
 
}
0
Миниатюры
Синхронизация map и vector. Iterator not incrementable  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.06.2016, 15:45
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Синхронизация map и vector. Iterator not incrementable (C++):

Vector iterator not incrementable - C++
Здравствуйте. Подскажите, из-за чего не работает код? При запуске программы появляется ошибка: &quot;... expression: vector iterator not...

Ошибка при запуске программы "vector iterator not incrementable" - C++
при запуске программы (без разницы какой функции) вылетает ошибка (заг. темы) как это исправить? мне кажется, что проблема в том, что я...

Ошибка list iterator not incrementable - C++
код: std::list&lt;Platform * &gt; Platform::Platform_list; //статическое поле класса Platform перебираем элементы и удаляем их при...

Ошибка в роботе с контейнером: set iterator not incrementable - C++
Задание:Дано предложение.Какие большие и маленькие буквы с этих 'k','p','s','t','f','h','c' не содержатся в предложении. Обязательным...

vector<T> template vector<T>::iterator - C++
Здраствуйте! При написании вектора столкнулся с проблемой такого рода: вот код вектора template &lt;typename T&gt; class vector { ...

Обращение к элементам vector, который находится в map, находящийся в map - C++
Всем добрый день! Имеется такой контейнер. Как обращаться к элементам вектора и как пушбэчить его? map &lt;int,map&lt;int,vector&lt;int&gt; &gt;...

7
nmcf
6095 / 5406 / 1889
Регистрация: 14.04.2014
Сообщений: 22,497
10.06.2016, 15:50 #2
После удаления итератор становится недействительным. Не используй такой цикл.
0
Baron Rojo
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 196
10.06.2016, 15:59  [ТС] #3
То есть использовать другой итератор? Или есть варианты получше?
0
nmcf
6095 / 5406 / 1889
Регистрация: 14.04.2014
Сообщений: 22,497
10.06.2016, 17:30 #4
Что вообще пытаешься сделать? У тебя удаление идёт сразу по первому несовпадению, а если другие элементы вектора совпадают?
0
Baron Rojo
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 196
10.06.2016, 19:20  [ТС] #5
Мне нужно синхронизировать содержимое vector и map так чтобы в одном контейнере были только те элементы что и в другом.
0
nmcf
6095 / 5406 / 1889
Регистрация: 14.04.2014
Сообщений: 22,497
10.06.2016, 20:29 #6
map содержит пары. Как ты их сопоставлять будешь?
0
SergioO
95 / 184 / 63
Регистрация: 13.12.2015
Сообщений: 995
10.06.2016, 20:43 #7
C++
1
2
3
   for (int i: v) {
    
   }
0
4AKE
29 / 29 / 12
Регистрация: 20.12.2010
Сообщений: 116
10.06.2016, 21:38 #8
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
void synchronize(map<int, int> *m1, vector<int>* vec1) {
    std::map<int, int>::iterator iter = m1->begin();
    std::map<int, int>::iterator endIter = m1->end();
 
    for (; iter != endIter; ) {
        if ( find(vec1->begin(), vec1->end(), iter->second) == vec1->end()) {
            iter = m1->erase(iter);
        }
        else {
            ++iter;
        }
    }
 
}
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2016, 21:38
Привет! Вот еще темы с ответами:

Std::vector<std::pair<std::vector<int>::iterator, std::vector<int>::iterator> - C++
Вопрос по вектору. Допустим есть вектор, std::vector&lt;int&gt; vec; на каком - то этапе заполнения я ставлю закладку итератора, ...

Map iterator - C++
map&lt;string, int&gt; m; m.insert(pair&lt;string, int&gt;(&quot;a&quot;, 1)); map&lt;string, int&gt;::iterator it = m.begin(); cout &lt;&lt; *it; ...

Map/set iterator not dereferencable - C++
Есть два класса, первый: class AnimationManager { public: String currentAim; std::map&lt;String, Animation&gt; animList; ...

Map/set iterator not dereferencable - C++
Всем доброго времени суток. Суть задания в том, чтобы удалить повторы комбинаций чисел в multimap'e. Проблема в том, что появляется данная...


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

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

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