![]() |
|
Модераторы: bsa |
![]()
|
|
| toxx |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
Решил написать хотя бы похожий на класс вектор свой класс
Хочется узнать, что нужно еще сделать, чтобы метод erase() был похож на erase() из вектора. Просто,работая с деревом(тема) При замене на свой вектор появляются многочисленные ошибки памяти(bad_alloc и другие) erase
конструктор копировщик
Это сообщение отредактировал(а) toxx - 1.4.2010, 17:47 |
||||||
|
|||||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
что делает твой метод erase я так и не понял, а конструктор копирования вроде правильный
|
|||
|
||||
| toxx |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
По идее должен удалять к-й элемент массива, нумерация 1 2 ... |
|||
|
||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
||||
|
||||
| toxx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
ИванМ
Ну я перекопировал элементы старого массива потом уменьшил размерность старого массива
И перекопирую уже в новый Может быть так лучше будет, с точки зрения вашего совета?
Чето намудрил с operator delete он отказывается удалять ) Это сообщение отредактировал(а) toxx - 31.3.2010, 20:39 |
||||
|
|||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
toxx, ты перекопировал элементы массива V из объекта buf в объект this странным кривым образом, а потом еще вдобавок удалил весь массив V объекта this и заново его создал. зачем тогда вообще предыдущая операция была нужна?
Добавлено через 1 минуту и 46 секунд и это что означает? delete это операция, применимая к указателю, а не значению. и к нулю твой тип приравнять нельзя. |
|||
|
||||
| toxx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
ой, понял что вы имеете ввиду только со 2го раза, вот сделал вродебы
Да, вот с этим
проблема, щас переделываю... |
||||
|
|||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
toxx, нет, вы так ничего и не поняли. Остальной код вы сами писали? Странно, если сами.
|
|||
|
||||
| toxx |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
Все писал сам, в книге только структура дана была и конструктор(не копировщик). Я просто этим первый раз занимаюсь, отсюда такие проблемы. может быть вы имели ввиду вот эту строчку:
я уже не знаю почему я не правильно вас понял... Это сообщение отредактировал(а) toxx - 31.3.2010, 23:07 |
||||||
|
|||||||
| ИванМ |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
Давайте я вам напишу алгоритм по шагам.
1 пункт у вас правильный: создаете копию этого объекта this.
2 пункт. Сдвигаете элементы созданного вектора buf влево, начиная с нужного символа (не забывая, что нельзя выходить за границу массива, это у вас не предусмотрено) 3 пункт. Удаляете массив вектора this и создаете его заново, с кол-вом элементов меньшим на единицу можно как у вас
4 пункт. Копируете элементы из измененного вектора buf в массив вектора this, исключая последний элемент в buf Вот и все. А у вас там каша какая-то |
||||
|
|||||
| toxx |
|
||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
Я вродебы таким вот образом скопировал элементы buf в массив V( как я понял V, это и есть this?)
Или нужно писать вместо моего копирования
вот это
Это сообщение отредактировал(а) toxx - 1.4.2010, 16:17 |
||||||||
|
|||||||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
||||
|
||||
| toxx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
Добавил условие выхода за границу массива
В итоге должно быть что-то такое?
Это сообщение отредактировал(а) toxx - 1.4.2010, 16:55 |
||||
|
|||||
| ИванМ |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1260 Регистрация: 19.6.2006 Где: СПб Репутация: 3 Всего: 23 |
все гораздо проще. на этом этапе можно обойтись с одним объектом - buf
просто проходите по элементам buf по циклу начиная с k и заканчивая n-2 и приравниваете текущей элемент следующему и все |
|||
|
||||
| toxx |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 653 Регистрация: 4.3.2009 Где: НН Репутация: 4 Всего: 13 |
Вот что получил функция значительно уменьшилась...
Это сообщение отредактировал(а) toxx - 1.4.2010, 17:11 |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |