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

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

Восстановить пароль Регистрация
 
Baron Rojo
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 176
10.06.2016, 15:45     Синхронизация map и vector. Iterator not incrementable #1
День добрый. Надо синхронизровать 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();
    }
 
}
Миниатюры
Синхронизация 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++ map/set iterator not dereferencable
Ошибка в роботе с контейнером: set iterator not incrementable C++
C++ Ошибка при запуске программы "vector iterator not incrementable"
C++ Map/set iterator not dereferencable
Map/set!( iterator not dereferencable) C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,581
10.06.2016, 15:50     Синхронизация map и vector. Iterator not incrementable #2
После удаления итератор становится недействительным. Не используй такой цикл.
Baron Rojo
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 176
10.06.2016, 15:59  [ТС]     Синхронизация map и vector. Iterator not incrementable #3
То есть использовать другой итератор? Или есть варианты получше?
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,581
10.06.2016, 17:30     Синхронизация map и vector. Iterator not incrementable #4
Что вообще пытаешься сделать? У тебя удаление идёт сразу по первому несовпадению, а если другие элементы вектора совпадают?
Baron Rojo
2 / 2 / 0
Регистрация: 21.11.2012
Сообщений: 176
10.06.2016, 19:20  [ТС]     Синхронизация map и vector. Iterator not incrementable #5
Мне нужно синхронизировать содержимое vector и map так чтобы в одном контейнере были только те элементы что и в другом.
nmcf
4303 / 3724 / 1255
Регистрация: 14.04.2014
Сообщений: 14,581
10.06.2016, 20:29     Синхронизация map и vector. Iterator not incrementable #6
map содержит пары. Как ты их сопоставлять будешь?
SergioO
 Аватар для SergioO
89 / 178 / 61
Регистрация: 13.12.2015
Сообщений: 971
10.06.2016, 20:43     Синхронизация map и vector. Iterator not incrementable #7
C++
1
2
3
   for (int i: v) {
    
   }
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.06.2016, 21:38     Синхронизация map и vector. Iterator not incrementable
Еще ссылки по теме:

Vector iterator not incrementable C++
C++ Ошибка list iterator not incrementable
C++ Map iterator

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

Или воспользуйтесь поиском по форуму:
4AKE
29 / 29 / 12
Регистрация: 20.12.2010
Сообщений: 115
10.06.2016, 21:38     Синхронизация map и vector. Iterator not incrementable #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;
        }
    }
 
}
Yandex
Объявления
10.06.2016, 21:38     Синхронизация map и vector. Iterator not incrementable
Ответ Создать тему
Опции темы

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