Forum Programmation.c++ anjuta et les vector

Posté par  .
Étiquettes :
0
15
juin
2005
Hello,

je m'initie au C++ avec le bouquin de bjarne stroustrup, je connais le Java enfin de bonnes bases, en c++ aussi (moins bonne qd meme lol)
je me sers de anjuta, et je veux faire un programme utilisant un vector d'entier pour commencer gentiment

alors je place un #include au début

et le compilateur panique affichant plein de message d'erreur lié au fichier vector...

je suis sur une debian sarge mise à jour...

quelqu'un sait d'ou ça vient svp ?


merci d'avance
  • # Messages d'erreur

    Posté par  (site web personnel) . Évalué à 5.

    On pourra t'aider si tu nous donne les messages d'erreur. Si ça se trouve le fichier n'est pas à l'emplacement recherché, ou anjute ne compile pas avec les bonnes options (je ne connais pas le C++)
  • # petit exemple

    Posté par  . Évalué à 1.


    #include

    void exemple()
    {
    std::vector vi;

    for(int i = 0; i < 10; ++i)
    vi.push_back(i);

    for(int i = 0; i < v.size(); ++i)
    v[i] *= 2;
    }
    • [^] # Re: petit exemple

      Posté par  . Évalué à 2.

      Je ne cherche pas à être désobligeant,
      mais c'est bien beau de mettre "#include" ...
      encore faudrait-il indiquer ce qu'il y a à inclure.
      Ici, sans doute <vector>,
      comme dans
      #include <vector>

      My2c

      PS : je viens de m'apercevoir que Templeet bouffe les < et > en mode html -> passer en "texte sans HTML". Entre les <et> tu avais vector ou bien vector.h ou bien même pas de <> ?
      • [^] # Re: petit exemple

        Posté par  . Évalué à 1.

        l'exemple donne ceci une fois la deuxième boucle for corrigée.

        #include <vector>

        void exemple()
        {
        std::vector<int> vi;

        for(int i = 0; i < 10; ++i)
        vi.push_back(i);

        for(int i = 0; i < vi.size(); ++i)
        vi[i] *= 2;
        }
        • [^] # Re: petit exemple

          Posté par  . Évalué à 2.

          J'ajouterais qu'inclure vi.size() directement dans la boucle n'est pas une bonne idée, car il faut réévaluer la méthode à chaque tour de boucle. Moi je préfère :

          unsigned int x,y;

          for (x=0,y=vi.size();x<y;++x) ...
          • [^] # Re: petit exemple

            Posté par  (site web personnel) . Évalué à 2.

            La fonction size() est inline (forcément à cause des templates), donc il n'y aura pas à priori d'appel de méthode. Et si la classe vector est bien optimisée, size() devrait faire un truc du genre "{ return _size; }".
            Au final, ça doit être assez rapide. Mais je t'accorde qu'aprés ça dépend aussi du compilateur, qui arrivera peut être plus facilement à optimiser les registres avec ta solution.
            Reste enfin une solution élégante (et je pense assez performante aussi) : les itérateurs.
  • # Des indices ?

    Posté par  . Évalué à 3.

    Tu ne nous donnes ni ton code, ni tes messages d'erreur. J'aime bien les énigmes mais quand même ...

    Commençons par le début (dans le contexte actuel) : Maîtrises-tu les templates ?

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.