none
regénérer le poiteur d'un Enumerateur RRS feed

  • Question

  • bonjour et encore mes meilleurs voeux

    J'ai besoin de récupérer la valeur de départ d'un Enumerateur que je fais avancer de plusieurs pas pour avoir un vue profonde sur la suite des mots. comme au début je fais mon objet = l'énumérateur, j'ai essayé l'inverse.

    Je  donne nom instruction:

    itWord = (System::Collections::Generic::List::Enumerator)pWord;

    J'ai essaye avec différent cast mais ce n'est pas reconnu par le compilateur

    Je n'ai pas trouve dans la documentation de MoveForward ou tout ce qui s’apparenterait à it-- du C++std.

    Jai besoin de faire revenir l'Enumerateur en arrière: comment puis je faire?


    Jean Noël Martin

    vendredi 3 janvier 2014 18:51

Réponses

  • J'ai donc déclaré:

    List<CAnalysedWordM^>::Enumerator itBackWord;

    et j'ai codé

                    pWord = itWord.Current;
    		itBackWord = itWord;
    		wsWord = pWord->wsWord;
    		if( pWord->POS == enPOSM::POS_STOPMARK)
    			break;
    		bNextWordIsValid = false;
    		b2NextWordIsValid = false;
    		b3NextWordIsValid = false;
    		if( itWord.MoveNext() != false)
    		{
    			pNextWord = itWord.Current;
    			bNextWordIsValid = true;
    			wsNextWord = pNextWord->wsWord;
    			if( itWord.MoveNext() != false)
    			{
    				
    				b2NextWordIsValid = true;
    				p2NextWord = itWord.Current;
    				wsNext2Word = p2NextWord->wsWord;
    				if( itWord.MoveNext() != false)
    				{
    					b3NextWordIsValid = true;
    					p3NextWord = itWord.Current;
    					wsNext3Word = p3NextWord->wsWord;
    					if( itWord.MoveNext() != false)
    					{
    						b4NextWordIsValid = true;
    						p4NextWord = itWord.Current;
    						wsNext4Word = p4NextWord->wsWord;
    					}
    				}
    			}
    		}
    		itWord = itBackWord;
    Ce qui compile bien. il faudra voire le résultat au test. dans l'attente je clos ce thread


    Jean Noël Martin

    • Marqué comme réponse JeanNoel53 mardi 7 janvier 2014 02:40
    mardi 7 janvier 2014 02:40

Toutes les réponses

  • Les Itérateurs .NET sont forward only, pour avoir des implémentations simples et performantes.

    Implémenter une version reverse d'un énumérateur, c'est de l'ordre de 3 lignes :

    http://bytes.com/topic/c-sharp/answers/260189-foreach-reverse-direction-feature-c-v2


    Paul Bacelar, Ex - MVP VC++

    samedi 4 janvier 2014 00:27
    Modérateur
  • Donc il y a une solution. ouf. Cependant le thread de votre lien concerne le c# et il ne comprend que peu d'énumérateur.

    auriez cous un exemple sur le C++?


    Jean Noël Martin

    samedi 4 janvier 2014 01:58
  • Etes-vous le créateur de la classe d'itérateurs ?

    Je pense que non. Si c'est le cas, le plus simple est de redemander un nouvel itérateur à partir du point de divergence.


    Paul Bacelar, Ex - MVP VC++

    lundi 6 janvier 2014 10:50
    Modérateur
  • J'ai donc déclaré:

    List<CAnalysedWordM^>::Enumerator itBackWord;

    et j'ai codé

                    pWord = itWord.Current;
    		itBackWord = itWord;
    		wsWord = pWord->wsWord;
    		if( pWord->POS == enPOSM::POS_STOPMARK)
    			break;
    		bNextWordIsValid = false;
    		b2NextWordIsValid = false;
    		b3NextWordIsValid = false;
    		if( itWord.MoveNext() != false)
    		{
    			pNextWord = itWord.Current;
    			bNextWordIsValid = true;
    			wsNextWord = pNextWord->wsWord;
    			if( itWord.MoveNext() != false)
    			{
    				
    				b2NextWordIsValid = true;
    				p2NextWord = itWord.Current;
    				wsNext2Word = p2NextWord->wsWord;
    				if( itWord.MoveNext() != false)
    				{
    					b3NextWordIsValid = true;
    					p3NextWord = itWord.Current;
    					wsNext3Word = p3NextWord->wsWord;
    					if( itWord.MoveNext() != false)
    					{
    						b4NextWordIsValid = true;
    						p4NextWord = itWord.Current;
    						wsNext4Word = p4NextWord->wsWord;
    					}
    				}
    			}
    		}
    		itWord = itBackWord;
    Ce qui compile bien. il faudra voire le résultat au test. dans l'attente je clos ce thread


    Jean Noël Martin

    • Marqué comme réponse JeanNoel53 mardi 7 janvier 2014 02:40
    mardi 7 janvier 2014 02:40