|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
25.11.2010, 20:54 | #1 |
Пользователь
Регистрация: 25.11.2010
Сообщений: 18
|
Ошибка с классом vector
Вобщем вполне стандарная задача состоит в том чтобы из массива удалить повторяющиеся элементы (int) просто через массивы сделать то я могу, но сейчас как раз разбираюсь с классом vector и не понимаю почему не работает((
Ошибка где-то в третьем for вылетает, на инкременте j вроде...вопрос почему? Код:
Последний раз редактировалось Stilet; 26.11.2010 в 16:01. |
25.11.2010, 22:31 | #2 |
Maniac
Форумчанин
Регистрация: 03.01.2009
Сообщений: 450
|
Код:
Стандартные библиотеки разработаны с учетом многолетнего опыта лучших программистов и они не больны "детскими болезнями крутизны в программизме"....
|
26.11.2010, 02:57 | #3 | |
Great Code Monkey
Форумчанин
Регистрация: 09.08.2007
Сообщений: 533
|
Цитата:
Просто мне трудно представить, как этот код можно написать еще хуже. |
|
26.11.2010, 10:57 | #4 |
Пользователь
Регистрация: 25.11.2010
Сообщений: 18
|
to ISergeyN спасибо конечно, но поиском я пользоваться умею, мне просто интересно почему не работает именно мой код..
to still_alive я конечно с уважением отношусь к людям знающим своё дело, но поставлен конкретный вопрос почему ругается на j++; Как мне изучить STL я вроде бы не писал.. |
26.11.2010, 13:16 | #5 |
Great Code Monkey
Форумчанин
Регистрация: 09.08.2007
Сообщений: 533
|
1)
for (j=i; ... if(*j==*i) test.erase(j); - поздравляю, вы удаляете весь массив) 2) erase удаляет элемент, сдвигая остальные на одну позицию влево. Вы уверены, что для того, чтобы получить итератор на следующий элемент, нужно увеличить j?) 3) после erase(j) итератор j становится недействительным. Цикл с необходимыми изменениями: Код:
|
26.11.2010, 14:06 | #6 |
Пользователь
Регистрация: 25.11.2010
Сообщений: 18
|
Первое то я вчера ещё заметил
Вот за j = test.erase(j); спасибо большое как я понимаю erase(j) удаляя j возвращает итератор на следующий элемент, так? |
26.11.2010, 14:13 | #7 |
Пользователь
Регистрация: 25.11.2010
Сообщений: 18
|
Всё нашёл, так и есть..
Порывшись в закромах нашёл книгу по STL Джосьютис)) |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Проблема с классом | _-Re@l-_ | Общие вопросы C/C++ | 3 | 23.09.2010 19:15 |
Работа с классом | UnChanter | Помощь студентам | 2 | 14.03.2010 20:23 |
Работа с классом| C++ | Konicy | Общие вопросы C/C++ | 15 | 21.12.2009 19:08 |
Программа с классом и объектами. | wepoTWR | Помощь студентам | 3 | 10.11.2009 22:34 |
C++ работа с классом | VadEr | Помощь студентам | 2 | 17.05.2009 12:33 |