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

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

Войти
Регистрация
Восстановить пароль
 
Mayonez
 Аватар для Mayonez
380 / 272 / 20
Регистрация: 26.12.2009
Сообщений: 875
#1

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

16.09.2010, 19:31. Просмотров 401. Ответов 3
Метки нет (Все метки)

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. что не так???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.09.2010, 19:31     vector - что не так?
Посмотрите здесь:

C++ Перевести vector во что-нибудь другое
C++ Что лучше использовать vector или массив
std::vector<int> Что это за тип данных? C++
Что означает двойное двоеточие в vector<int>::iterator it ? C++
Что происходит при удалении/добавлении элемента в контейнер vector? C++
C++ что показывает std::vector::max_size
Что не так?) C++
C++ Vector::swap и std::move - что эффективнее?
C++ Замена vector на что-то более компактное
C++ Что означает конструкция vector<int> v1{ 5 }; ?
C++ Что возвращать из vector-a указателей, если объект не найден?
C++ Что значит отобразить преобразованные элементы по восемь слов на строку? Vector

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
fasked
Эксперт C++
 Аватар для fasked
4929 / 2509 / 180
Регистрация: 07.10.2009
Сообщений: 4,306
Записей в блоге: 1
16.09.2010, 20:46     vector - что не так? #2
Цитата Сообщение от Mayonez Посмотреть сообщение
в резулятате в одном векторе должно быть единственное значение 3, во втором - 2, а получается в первом 3 5, а во втором 2 5. что не так???
Как оно у Вас вообще работает, тут же чистой воды вылет за границы массива. Вы выполняете erase - элемент удаляется и итератор начинает указывать на следующий элемент после удаленного, а потом вы еще делаете инкремент итератора.
PointsEqual
ниначмуроФ
 Аватар для PointsEqual
833 / 517 / 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
380 / 272 / 20
Регистрация: 26.12.2009
Сообщений: 875
16.09.2010, 21:40  [ТС]     vector - что не так? #4
Ошибку понял, исправил, помогло, спасибо
Yandex
Объявления
16.09.2010, 21:40     vector - что не так?
Ответ Создать тему
Опции темы

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