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

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

Восстановить пароль Регистрация
Другие темы раздела
C++ Строки http://www.cyberforum.ru/cpp-beginners/thread1001205.html
#include <iostream.h> #include <stdio.h> #include <string> int main() { char A; int i, N=0; cout<<"Vvedite stroku" gets(A); for (i=0;A; i++)
C++ Надо это программу переписать через do while Надо это программу переписать через do while: #include "stdafx.h" #include <iostream> #include <math.h> using namespace std; int main() { float u,v,n,h,x,y; http://www.cyberforum.ru/cpp-beginners/thread1001202.html
C++ Нужна блоксхема
Нужна блоксхема срочно, помогите пожалуйста #include "StdAfx.h" #include <iostream> #include <ctime> using namespace std;
Поменять элементы массива особым способом C++
Ребят...изучаю Си не много....дана была мне задача....вроде всю сделал...но вот последний шаг остался..кароче вся соль. В массиве из n чисел, нужно поменять первый елемент с n, 2 с n-1 ну и т.д. Просто не понимаю как сделать...напишите хотя бы код...а там попробую разобраться.
C++ Составить код для решения методом фибоначчи? http://www.cyberforum.ru/cpp-beginners/thread1001180.html
1/х - Пи*cosПиX = 0 3 недели не могу понять как.
C++ Для чего виртуальные функции? Как я понял в классах наследниках их можно использовать,для одинаковых имен функций. Но помойму это не главное их свойство. подробнее

Показать сообщение отдельно
Guy Kawasaki
 Аватар для Guy Kawasaki
2 / 1 / 0
Регистрация: 07.11.2013
Сообщений: 42
07.11.2013, 22:39     Использование итератора в двусвязном списке
Всем добрый день/вечер. Я сегодня уже обращался к форумчанам за помощью, и мне помогли, но видать я совсем тупой Мне помогли через дружественность реализовать класс Iterator и перегрузить несколько операторов, но как, собственно говоря, этот итератор использовать для вывода значений узлов списка я не знаю. Помогите пожалуйста.
Косяк: Не могу вывести значение узлов, используя итератор.
Среда: CodeBloks.

Очевидные описания конструкторов/деструкторов и некоторых методов я опустил для "прозрачности" кода.

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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
#include <iostream>
#include <locale.h>
using namespace std;
 
class Iterator;
 
class List
{
private:
    struct Node
    {
        Node();
        Node(const Node &original); 
        ~Node();
 
        int core;
        Node *next, *previous;
    };
 
    int meter;
    static Node *head, *tail, *ptr;
public:
    friend class Iterator;
 
    List();
    List(const List &original) {};
    List &operator = (const List &rhs);
    ~List();
 
    void cyclic_list_creation();
 
    Iterator begin() [B]Эти функции я реализовал неправильно, и, скорее всего, именно в этом и ошибка[/B]
    {
        return Iterator(List::head);
    }
    Iterator end()
    {
        return Iterator(0);
    }
};
 
class Iterator
{
public:
    friend class List;
 
    Iterator();
    Iterator(List::Node* p);
    Iterator &operator ++ ()
    {
         ptr = ptr -> next;
         return *this;
    }
    Iterator &operator -- ()
    {
         ptr = ptr -> previous;
         return *this;
    }
    int &operator * ()
    {
        return ptr -> core;
    }
    int &operator -> ()
    {
        return ptr -> core;
    }
    bool operator == (Iterator &right)
    {
        return ptr == right.ptr;
    }
private:
   List::Node *ptr;
};
 
int main()
{
    setlocale(LC_CTYPE,"Russian");
 
    List abc;
 
    abc.cyclic_list_creation(); //Здесь идет создание списка (работает правильно)
 
    Iterator iter = abc.begin();
    Iterator end = abc.end();
 
    for (; !(iter == end); ++iter) //перегружен префиксный оператор
    {
        cout << *iter << " ";
    }
 
    return 0;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 08:52. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru