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

vector - что не так? - C++

Восстановить пароль Регистрация
 
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
16.09.2010, 19:31     vector - что не так? #1
C++
1
2
3
4
5
6
7
8
void delSame(vector<int> &first, vector<int> &second)
{
   vector<int>::iterator pf, ps;
   
   for(pf=first.begin(); pf!=first.end(); pf++)
      for(ps=second.begin(); ps!=second.end(); ps++)
            if(*pf==*ps) {first.erase(pf); second.erase(ps); break;}
}
функция получает два вектора и если два элемента одинаковые, удаляет их
1--> 2 3 5 5
2--> 2 2 5 5
в резулятате в одном векторе должно быть единственное значение 3, во втором - 2, а получается в первом 3 5, а во втором 2 5. что не так???
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4924 / 2504 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
16.09.2010, 20:46     vector - что не так? #2
Цитата Сообщение от Mayonez Посмотреть сообщение
в резулятате в одном векторе должно быть единственное значение 3, во втором - 2, а получается в первом 3 5, а во втором 2 5. что не так???
Как оно у Вас вообще работает, тут же чистой воды вылет за границы массива. Вы выполняете erase - элемент удаляется и итератор начинает указывать на следующий элемент после удаленного, а потом вы еще делаете инкремент итератора.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
832 / 516 / 33
Регистрация: 12.10.2009
Сообщений: 1,915
16.09.2010, 21:17     vector - что не так? #3
Mayonez, перед break вставь

C++
1
2
pf = first.begin();
       ps = second.begin();
Mayonez
 Аватар для Mayonez
379 / 271 / 20
Регистрация: 26.12.2009
Сообщений: 875
16.09.2010, 21:40  [ТС]     vector - что не так? #4
Ошибку понял, исправил, помогло, спасибо
Yandex
Объявления
16.09.2010, 21:40     vector - что не так?
Ответ Создать тему
Опции темы

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