map,vector,sync
От: GraKon  
Дата: 10.05.17 08:03
Оценка:
нужно сделать синхронизацию контейнеров map && vector, но что-то с перебором вектора, точнее я понимаю где проблема, но не понимаю почему и как ее решить. Сильно помидорами не бросайтесь, я еще зеленый в с++. Заранее спасибо за ответ.

void sync(std::map<int, int> *map1, std::vector<int>* vec1) 
{
    std::map<int, int>::iterator it = map1->begin();
    std::map<int, int>::iterator endIter = map1->end();
    int cnt=0;
    for (; it != endIter; ) 
    {
        if ( find(vec1->begin(), vec1->end(), it->second) == vec1->end()) {
            it = map1->erase(it);
            cnt++;
        }
        else {
            ++it;
        }
        
    }
    for( std::vector<int>::iterator vi = vec1->begin(); vi != vec1->end(); )
    {
        if( find( map1->begin(), map1->end())  == map1->end() )
        {
            vi = vec1->erase( vi );
            cnt++;
        }
        else
            vi++;
    }
 
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.