Opérateur d'incrémentation/ itérateur de mise en œuvre

Je suis à essayer de comprendre deux choses ici:

  1. Comment puis-je écrire un opérateur d'incrémentation pour une classe de nœud qui a un pointeur vers le nœud suivant?
  2. Comment puis-je mettre en œuvre les itérateurs pour une classe comme ci-dessous?
    #include <iostream>
    #include <vector>
    using namespace std;
    
    template <typename T>
    class Node {
    public:
        Node(int i=0):val(i) {}
        Node*& operator++(int i=0) {return next;};
    
        T val;
        Node *next;
    };
    
    //================================================
    int main() {
    
        Node<int> *head, *tmp1, *tmp2;
    
        tmp1 = new Node<int>(0); 
        head = tmp1;
    
        for (int i=1; i<10; ++i) {
    
            tmp2 = new Node<int>(i);
            tmp1->next = tmp2;
            tmp1 = tmp2;
        }
    
        while (head != NULL) {
    
            cout << head->val << " '";
            head = head->operator++(0);    //How do I make it work with ++head;?
        }
    }

Ce n'est pas un bon exemple pour démontrer la surcharge d'opérateur ou d'itérateurs.

Vous ne pouvez pas. la tête est un pointeur et ++ opérateur est builtin/défini pour les pointeurs. Si la tête est celle d'un objet ou d'une référence à un objet, alors vous pourriez le faire.
hmm..ok. Connaissez-vous des liens vers des textes itérateurs? Merci
Vous pouvez consulter les réponses à cette question: stackoverflow.com/questions/3582608/...
comme vous l'avez suggéré découlant STL itérateurs j'étais en train de regarder l'exemple à cplusplus.com/reference/std/iterator/iterator. Donc, si je veux lire et à écrire, dois-je simplement utiliser random_access_iterator_tag ? ou recommandez-vous?
Je recommande de commencer à partir de boost::iterator_facade, qui permet de fournir une partie de l'infrastructure que de la bonne itérateurs besoin. Il a même un tutoriel qui va avec.

OriginalL'auteur blueskin | 2010-12-01