| 12
 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
 
 | Iterator & operator+=(size_t count){
    /* l'utilisateur est un imbécile distrait : il n'y a aucun sens à avoir un code it+= -1 */
    assert(count>=0 && " only positive value are accepted");
    /* l'utilisateur est un imbécile distrait : il n'y a aucun sens à avoir un code it+= 0 */
    assert(count > 0 && "no sens to use it+=0");
    /* nous pourrions même aller plus loin et obliger l'utilisateur à utiliser l'incrémentation
     * quand il veut passer au suivant
   assert(count >1 && "why don't y make use of the ++ operator?");
    */
   /* on va travailler sur une copie par sécurité */
   Iterator copy{*this};
   for(int c=0; c<count;++c){
       /* l'utilisateur est un imbécile distrait, qui peut vouloir passer au 10 eme élément suivant alors qu'il n'y en a que 9 */
       assert(copy.courant && "No more next element");
       ++copy;
    }
    /* si on arrive ici, copy correspond à un élément valide (ou, au pire, à l'élément renvoyé par end() ) */
    courant = copy.courant;
    return *this;
}
/* Le principe reste exactement le même pour l'opérateur -=... à ceci près qu'on décrémente l'itérateur au lieu de l'incrémenter 
 * Les même causes ayant les mêmes effet, je ne m'amuserai pas à copier les commentaires :D 
 */
terator & operator+=(size_t count){
    assert(count>=0 && " only positive value are accepted");
    assert(count > 0 && "no sens to use it-=0");
    /* 
   assert(count >1 && "why don't y make use of the -- operator?");
    */
   Iterator copy{*this};
   for(int c=0; c<count;++c){
       assert(copy.courant && "No more previous element");
       --copy;
    }
    courant = copy.courant;
    return *this;
} | 
Partager