conversion iterator const_iterator

conversion iterator const_iterator - C++ - Programmation

Marsh Posté le 18-06-2009 à 19:37:17    

Hi,
 
C'est possible de convertir un un const_iterator en iterator ? l'inverse également?
Je passe par const_cast?
 
Merci

Reply

Marsh Posté le 18-06-2009 à 19:37:17   

Reply

Marsh Posté le 18-06-2009 à 19:47:21    

distance/Advance plutôt ?

Reply

Marsh Posté le 18-06-2009 à 20:05:59    

Glock 17Pro a écrit :

Hi,
 
C'est possible de convertir un un const_iterator en iterator ?


 
Non.
 

Citation :

l'inverse également?


 
Il y a normalement une convertion implicite.
 

Citation :

Je passe par const_cast?


 
Non.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 18-06-2009 à 20:16:58    

donc advance/distance obligatoire

Reply

Marsh Posté le 18-06-2009 à 20:21:49    

Glock 17Pro a écrit :

donc advance/distance obligatoire


 
J'ai du mal à voir en quoi ces fonctions offrent un moyen de convertir un const_iterator en un iterator.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 18-06-2009 à 20:30:59    

mais si,

 
Code :
  1. typedef vector<int> vec;
  2. typedef vec::iterator Iter;
  3. typedef vec::const_iterator  ConstIter;
  4. vec v;
  5. ConstIter ci(v.begin());
  6. ++ci;++ci; //on fait pointer ci sur un élément du vec
  7. Iter i(d.begin());
  8.                  
  9. //boum "conversion"
  10. advance(i, distance<ConstIter>(i, ci));


Message édité par Glock 17Pro le 18-06-2009 à 20:42:57
Reply

Marsh Posté le 18-06-2009 à 21:24:12    

Ok, je vois ce que tu voulais dire.  Tu ne convertis pas mais tu calcules un iterateur équivalent.  Je pensais plus à quelque chose comme certaines fonctions strXXX en C qui permettent de perdre un const (mais pas en C++, il y a les surcharges qui vont bien).


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 22-06-2009 à 16:11:16    

Je me permet un up : je me demandais : pourquoi on ne peut pas utiliser const_cast ?


Message édité par kao98 le 22-06-2009 à 16:11:44

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Marsh Posté le 22-06-2009 à 16:59:58    

Parce que X::iterator et X::const_iterator sont deux classes différentes, pas des types ne différant que par des qualifications de const/volatile.


---------------
The truth is rarely pure and never simple (Oscar Wilde)
Reply

Marsh Posté le 22-06-2009 à 18:54:53    

Effectivement !
Suis con :pfff:


Message édité par kao98 le 22-06-2009 à 18:55:17

---------------
Kao ..98 - Uplay (R6S) : kao98.7.62x39 - Origin (BF4, BF1) : kntkao98
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed