STL <list> Как удалять элементы?
Портится только итератор на удаленный элемент. Сдвигай итератор до удаления.
list::remove_if
Ты знал, ты знал
Пасиб 
Пасиб 
MSVC-шный erase возвращает инкремент итератора.
Хе-хе, у меня Dev C++ и вот такое работает
И тебе пасиб
#include <list>
...
list<int> l;
l.push_back (1);
l.push_back (2);
l.push_back (3);
l.push_back (4);
l.push_back (3);
for (i = l.begin ; i != l.end; ++i)
{
if *i) == 3)
i = l.erase(i);
}
И тебе пасиб

Следует на будущее учесть, что это нестандартное поведение 

MSVC-шный erase
Не надо использовать платформозависимые вещи. Стыдно должно быть за упоминание M$ в треде по STL.

The iterator returned from a.erase(q) points to the element immediately following q prior to the element being erased. If no such element exists, a.end is returned.
a - sequence
list<int> l;
list<int>::iterator it1, it2;
l.push_back(1);
l.push_back(2);
l.push_back(3);
l.push_back(4);
l.push_back(5);
it1 = ++++l.begin;
it2 = l.erase(it1);
it2 -> 4
it1 -> говно (по понятным причинам)
где хуйня, че-то не врублюсь?
силиконовский стл смотрел? 

А, сорри, объебался 
Я перепутал ассоциативные контейнеры с последовательностями, вопрос снят с повестки дня.

Я перепутал ассоциативные контейнеры с последовательностями, вопрос снят с повестки дня.
Знаю, что в мс-овском stl-e у std::exception есть еще конструктор с char const *, чем в стандарте и не пахнет.
Просто интересно, что еще такого? (сравнивая stl 2005-й студии, конешно, старое в пизду)
Просто интересно, что еще такого? (сравнивая stl 2005-й студии, конешно, старое в пизду)
в мс-овском stl-e у std::exception есть еще конструктор с char const *,
Ну и нахуя это надо? есть же std::logic_error
я не ебу, нахуя надо
в майкрософте прогерам моча в голову ударила
мне интересно, что еще, раз уж ты написал, что должно быть стыдно?
в майкрософте прогерам моча в голову ударила
мне интересно, что еще, раз уж ты написал, что должно быть стыдно?
Ну M$ — это просто стыдно. Они же не могут следовать общим стандартам, им надо изъёбов понаделать.
hash_map'а вроде, например, нет.
hash_map'а вроде, например, нет.
все понятно...
не оно ?
http://www.sgi.com/tech/stl/Sequence.html
А что там не так?
Erase a.erase(p) p is a dereferenceable iterator in a. Destroys the element pointed to by p and removes it from a. [3] a.size is decremented by 1. The relative order of the other elements in the sequence is unchanged. The return value is an iterator to the element immediately following the one that was erased.>где хуйня, че-то не врублюсь?
А что там не так?
Вроде еще prev_permutation для контейнера с равными элементами неадекватно работает (по крайней мере в 7 студии все еще есть этот баг). При этом next_permutation работает правильно. Может ужо подправили (дело было в том, что перепутаны (a < b) и !(b < a
Просто интересно, что еще такого? (сравнивая stl 2005-й студии, конешно, старое в пизду)
ага, точно 
2Пеонизд: кури мсдн все таки.
ЗЫ На С++ не пишу

2Пеонизд: кури мсдн все таки.
ЗЫ На С++ не пишу
2Пеонизд: кури мсдн все таки.
Ты последний, у кого я спрошу совета. Особенно после такого:
ЗЫ На С++ не пишу
Тут конечно все папки немерянные, тока можно ли уточнить - то что l.erase возвращает - это стандартно?
Стоит ли изучать всякие STLport, boost и другие.
А чем хреново STL - что то некоторые пишут, что лучше отказаться от шаблонов...
Стоит ли изучать всякие STLport, boost и другие.
А чем хреново STL - что то некоторые пишут, что лучше отказаться от шаблонов...
В последовательных списках erase ведет себя зачотно )
цитата из стандарта несколькими постами выше
и что тебе мешает самому туда посмотреть?
и что тебе мешает самому туда посмотреть?
Хреновое знание английского
(в общих чертах я уловил, что он возвращает; но в правильности совего перевода не до конца был уверен).
Вообщем с этим понятно.
А что с либами?
(в общих чертах я уловил, что он возвращает; но в правильности совего перевода не до конца был уверен).Вообщем с этим понятно.
А что с либами?
стоит использовать boost
это не связано конкретно с твоим вопросом, но иногда буст очень сильно упрощает жизнь
это не связано конкретно с твоим вопросом, но иногда буст очень сильно упрощает жизнь
У него вроде как минус - большой размер (правда вроде его частично можно использовать) + проблемы со скоростью (то же про STL)?
P.S. Сильно не пинайте, я начинающий прогер на С++
P.S. Сильно не пинайте, я начинающий прогер на С++

это все предрассудки
ну все зависит от того, какие бустовские библиотеки ты используешь
ну все зависит от того, какие бустовские библиотеки ты используешь
Оставить комментарий
0000
Хоцца удалять элементы, которые удовлетворяют некоторому условию.Такой код не прокатывает (судя по всему после удаления элемента надо заново инициализировать итератор)
Единственное, что пришло в голову, это организовать цикл, где если элемент найден, то удалить его и заново проинициализировать итератор. Но че то мне кажется можно проще, без нескольких пробегов списка.
Вопрос - как?