Partage
  • Partager sur Facebook
  • Partager sur Twitter

[Qt] QVector et iterator

Sujet résolu
Anonyme
    2 avril 2008 à 18:44:32

    voila j'ai un probléme j'arrive pas a suprimé l'élement "13" de mon QVector voila mon code.

    1. vtint.append(10);
    2.         vtint.append(11);
    3.         vtint.append(13);
    4.         vtint.append(12);
    5.         QVectorIterator<int> itint(vtint);
    6.         while(itint.hasNext())
    7.         {
    8.                 std::cout << itint.next() << std::endl;
    9.         }
    10.          QMutableVectorIterator<int> itmint(vtint);
    11.         int i = 0;
    12.         while(itmint.hasNext())
    13.         {
    14.         //std::cout << itmint.next() << std::endl;
    15.         i = itmint.next();
    16.         //std::cout << i << std::endl;
    17.         if(i == 13)
    18.                 {
    19.                 itmint.remove();
    20.                 std::cout << "remove 13" << std::endl;
    21.                 }
    22.         }
    23.         itint.toFront();
    24.         while(itint.hasNext())
    25.         {
    26.                 std::cout << itint.next() << std::endl;
    27.         }


    voila ma sortie console :
    10
    11
    13
    12
    remove 13
    10
    11
    13
    12
    • Partager sur Facebook
    • Partager sur Twitter
      2 avril 2008 à 21:02:38

      Bon je n'y connais rien mais est-ce que la ligne surligné sert à incrémenter le i ?
      1. vtint.append(10);
      2.         vtint.append(11);
      3.         vtint.append(13);
      4.         vtint.append(12);
      5.         QVectorIterator<int> itint(vtint);
      6.         while(itint.hasNext())
      7.         {
      8.                 std::cout << itint.next() << std::endl;
      9.         }
      10.          QMutableVectorIterator<int> itmint(vtint);
      11.         int i = 0;
      12.         while(itmint.hasNext())
      13.         {
      14.         //std::cout << itmint.next() << std::endl;
      15.         i = itmint.next();
      16.         //std::cout << i << std::endl;
      17.         if(i == 13)
      18.                 {
      19.                 itmint.remove();
      20.                 std::cout << "remove 13" << std::endl;
      21.                 }
      22.         }
      23.         itint.toFront();
      24.         while(itint.hasNext())
      25.         {
      26.                 std::cout << itint.next() << std::endl;
      27.         }

      Sinon rajoute un i++ dans ton while.
      • Partager sur Facebook
      • Partager sur Twitter
      :)
      Anonyme
        2 avril 2008 à 21:23:35

        non elle incrémente pas le i

        T & QMutableVectorIterator::next ()
        Returns a reference to the next item, and advances the iterator by one position.
        Calling this function on an iterator located at the back of the container leads to undefined results.

        donc sa retourne la valeur de l'item et avance l'iterateur de 1 donc i sera egal a la valeur de l'item 10 11 12 ou 13 dans mon cas
        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          3 avril 2008 à 21:32:20

          j'ai trouvé la solution (j'avoue on m'a un peut aider :p)

          la doc de QVectorIterator a écrit:

          Multiple iterators can be used on the same vector. If the vector is modified while a QVectorIterator is active, the QVectorIterator will continue iterating over the original vector, ignoring the modified copy.

          donc j'ai fait sa itint = QVectorIterator<int *>(vtint); a la place de itint.toFront();

          voila merci a ce qui mon lut a+
          • Partager sur Facebook
          • Partager sur Twitter

          [Qt] QVector et iterator

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown