Форум программистов, компьютерный форум CyberForum.ru

Итератор, вставка в произвольное место списка - C++

Восстановить пароль Регистрация
 
igor921
Заблокирован
03.06.2013, 19:56     Итератор, вставка в произвольное место списка #1
Здравствуйте. Подскажите как вставить значение в произвольное место списка используя итератор.
Эта функция должна выглядеть так:
C++
1
iterator insert(iterator position, const T& value);
Вот кидаю исходник итератора, если нужно кину всю программу
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
class iterator
    {
    public:
        _Node *p;
        iterator(void)
        { 
            p=NULL; 
        }
        iterator(list<T> & lst)
        { 
            p=lst._Beg; 
        } 
        ~iterator(void)
        {
            //delete p;
        }
 
        iterator operator++()
        {
            iterator tmp=*this;
            if(p->_Next!=NULL)
                p=p->_Next;
            else
                p=NULL;
            return tmp;
        }
 
        T& operator*(void)
        { 
            return p->_Value; 
        }
 
        int operator!=(iterator pp)
        { 
            return p!=pp.p; 
        }
 
        iterator operator=(iterator pp)
        { 
            p=pp.p; 
            return *this; 
        }
 
        int operator == (iterator pp)
        { 
            return p == pp.p; 
        }
 
    };
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
03.06.2013, 20:19     Итератор, вставка в произвольное место списка #2
Зависит от того, как список устроен; если он циклический двусвязный, то примерно так
C++
1
2
3
4
5
6
7
8
Node * newNode = new Node;
newNode->value = value;
 
newNode->_Previous = position.p->_Previous;
newNode->_Next     = position.p;
 
position.p->_Previous->_Next = newNode;
position.p->_Previous        = newNode;
igor921
Заблокирован
03.06.2013, 20:41  [ТС]     Итератор, вставка в произвольное место списка #3
Ругается на 7 и 8 строку...ошибка с памятью

Добавлено через 4 минуты
Спасибо, разобрался) Не проходил к цикле до нужного адресса
gray_fox
03.06.2013, 20:45
  #4

Не по теме:

Не знаю, зачем "проходить в цикле до нужного адреса" при вставке, но ок)

igor921
Заблокирован
03.06.2013, 20:50  [ТС]     Итератор, вставка в произвольное место списка #5
Откровенно говоря сам теперь не пойму зачем, но так заработало) а сроки жмут, поэтому разбираться не буду почему так)
Yandex
Объявления
03.06.2013, 20:50     Итератор, вставка в произвольное место списка
Ответ Создать тему
Опции темы

Текущее время: 03:26. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru