Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.03.2011, 20:32   #21
Д_М
Пользователь
 
Регистрация: 02.02.2011
Сообщений: 92
По умолчанию

Цитата:
кстати и такая форма
Код:

data.erase(it);

тоже работает

и никакого присваивания... объясните ?!
Тут вот какое дело:
Цитата:
Warning: there is no guarantee that a valid iterator on a is still valid after an insertion or an erasure. In some cases iterators do remain valid, and in other cases they do not. The details are different for each sequence class.
Надо смотреть в документации, гарантирует ли std::vector валиднось итератора после erase или нет. В данной реализации оказалось, что все хорошо.
Д_М вне форума Ответить с цитированием
Старый 02.03.2011, 20:42   #22
onewho
Форумчанин
 
Регистрация: 29.09.2010
Сообщений: 636
По умолчанию

понимаете, мы же после этого его не используем а выходим из подпрограммы.
а при следующем входе он снова показывает на 1ый элемент, так что никаких проблем.
я что-то не так понимаю?
варнинг - это ваш компилятор выдает? MSVS молчит.
onewho вне форума Ответить с цитированием
Старый 02.03.2011, 20:52   #23
Д_М
Пользователь
 
Регистрация: 02.02.2011
Сообщений: 92
По умолчанию

Цитата:
Сообщение от onewho Посмотреть сообщение
понимаете, мы же после этого его не используем а выходим из подпрограммы.
Как не используем? Мы же цикл крутим.


Цитата:
Сообщение от onewho Посмотреть сообщение
варнинг - это ваш компилятор выдает? MSVS молчит.
Нет, это отсюда:
http://www.sgi.com/tech/stl/Sequence.html
Д_М вне форума Ответить с цитированием
Старый 03.03.2011, 08:44   #24
Obey-Kun
Линуксоид
Участник клуба
 
Аватар для Obey-Kun
 
Регистрация: 31.07.2009
Сообщений: 1,403
По умолчанию

У тебя неправильный подход. Я же писал:
Цитата:
лучше делать через перегрузку operator== и юзать erase без написания всяких циклов.

Ещё вариант -- data.erase(std::remove_if(data.begi n(), data.end(), <сюда впихни функцию-сравнивалку>), data.end());
Я схожу с ума или это глючит реальность?
Jabber ID: obey@obey.su
Obey-Kun вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
class vector Proghelper Помощь студентам 5 09.12.2010 21:31
#include <vector> GBAXA Visual C++ 12 15.08.2010 11:25
итераторы и vector.erase( Teksa Общие вопросы C/C++ 5 28.04.2010 15:05
vector NiCola999 Помощь студентам 5 26.02.2010 08:37
std::vector ciaonataha Общие вопросы C/C++ 1 10.05.2009 15:50