24 / 24 / 5
Регистрация: 21.11.2012
Сообщений: 106
|
|||||||||||
1 | |||||||||||
vector::erase()?30.12.2012, 12:53. Показов 4336. Ответов 30
Метки нет (Все метки)
есть вектор структур
пытаюсь так
0
|
30.12.2012, 12:53 | |
Ответы с готовыми решениями:
30
vector.erase Erase vector; iterator std::vector::erase Ошибка с vector.erase |
24 / 24 / 5
Регистрация: 21.11.2012
Сообщений: 106
|
|
30.12.2012, 13:34 [ТС] | 3 |
хехе еслиб силён я был в STL))
допустим определяю я итератор по правилам vector<person> iterator it1; но в структуре person поле name является типом string, т.е. размер всё равно не предопределён. поэтому непонятно как быть.
0
|
Почетный модератор
7393 / 2639 / 281
Регистрация: 29.07.2006
Сообщений: 13,696
|
|
30.12.2012, 14:26 | 6 |
Тогда есть алгоритм unique, которому можно передать предикат, где реализовать сравнение имет структур.
Не по теме: Это ответ автору ) просто, задание вроде такое, поэтому процитировал тебя :)
1
|
30.12.2012, 14:32 | 7 |
Если так то сначала std::sort() потом std::unique().
Но если допустимо можно сразу использовать std::set (или std::map) вместо std::vector Добавлено через 5 минут Но в итоге все ровно нужно будет воспользоваться erase() так как remove только перемещает элементы в конец а не удаляет их.
0
|
30.12.2012, 14:53 | 11 | |||||
Как по мне, unique самое то. Вот как бы я решил:
1
|
Заблокирован
|
||||||
30.12.2012, 15:00 | 13 | |||||
booker, вот так это делается
От себя - итераторы, тяжеловесные констукции - зачем это всё? std::vector допускает простую адресацию по индексу, как к элементу массива
1
|
3646 / 1378 / 243
Регистрация: 16.04.2009
Сообщений: 4,526
|
|
30.12.2012, 15:20 | 15 |
Не согласен!
При полной оптимизации итератор превращается в обычный указатель, и доступ к нему - обычная операция разыменования. В случае индексации на каждой итерации происходит прибавление к базе значения (i * sizeof( type )).
0
|
24 / 24 / 5
Регистрация: 21.11.2012
Сообщений: 106
|
|
30.12.2012, 15:40 [ТС] | 16 |
Добавлено через 11 минут go, просто нет еще достаточного понимания контейнеров, поэтому с индексами будет попонятней пока.
0
|
24 / 24 / 5
Регистрация: 21.11.2012
Сообщений: 106
|
|
30.12.2012, 15:51 [ТС] | 18 |
нужен был вектор, обычный динамический массив был бы менее эффективен в моём случае, свой вектор писать не хотелось))
0
|
|
30.12.2012, 16:11
#19
|
Не по теме: booker, многие на этом форуме мнят себя супер экспертами, не понимая, что на поверку не смогут даже что-то маломальски сложное написать, так что не бери в голову некоторые пустые замечания. От себя добавлю, что лично сам использую индексную адресацию и каких либо тормозов я не замечал, так что используй на здоровье если нравиться, захочешь потом перейдёшь на итераторы это всегда можно успеть сделать;)
0
|
30.12.2012, 16:13 | 20 |
Всегда можно успеть пользоваться индексами, а с итераторов лучше начинать сразу...
Ибо это основы STL понимание которых дает возможности...
0
|
30.12.2012, 16:13 | |
30.12.2012, 16:13 | |
Помогаю со студенческими работами здесь
20
Функция Erase класса vector Крах при vector.erase() Vector : iterator & erase Vector <bool> erase iterator outside range Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |