IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

 C++ Discussion :

parcourir un tableau en c++


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Doctorant
    Inscrit en
    Février 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 258
    Par défaut parcourir un tableau en c++
    bonjour ;

    je suis débutant en c++, en java pour parcourir et pour savoir le nombre de cases d'un tableau j'utilise lenght .

    en c++ il y'a sizeof(tab) , mais elle rend la taille en octet et pas en nombre de case .


    Merci par avance

  2. #2
    Membre Expert Avatar de Ehonn
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2012
    Messages
    788
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2012
    Messages : 788
    Par défaut
    Bonjour

    En C++, c'est size : http://www.cplusplus.com/reference/vector/vector/size/

    Depuis C++11, on peut faire ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    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
    // g++ -Wall -Wextra -Wconversion -std=c++11 -pedantic -O3 -march=native -fopenmp main.cpp -o main && ./main
     
    #include <iostream>
    #include <vector>
     
    int main()
    {
    	std::vector<int> v({0, 1, 2, 3, 4, 5, 6});
     
    	// Parcours "à l'ancienne"
    	for (std::size_t i = 0; i < v.size(); ++i)
    	{
    		std::cout << v[i] << std::endl;
    	}
    	std::cout << std::endl;
     
    	// Parcours C++11 (range based iterator)
    	for (auto /*const &*/ e : v)
    	{
    		std::cout << e << std::endl;
    	}
    	std::cout << std::endl;
     
    	// Parcours avec les itérateurs
    	for (auto it = v.begin(); it != v.end(); ++it)
    	{
    		std::cout << *it << std::endl;
    	}
    	std::cout << std::endl;
     
    	return 0;
    }

  3. #3
    Membre chevronné
    Profil pro
    Consultant en technologies
    Inscrit en
    Octobre 2013
    Messages
    158
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Consultant en technologies

    Informations forums :
    Inscription : Octobre 2013
    Messages : 158
    Par défaut
    Une remarque cependant,

    size fonctionne avec les conteneurs stl par exemple vector.

    Si tu utilise un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int Entries = 42
    int* tab = new int[Entries]
     
    // Tu accèdes aux contenu de tab via  tab[index]
    tab contiens l'adresse du premier élément mais pas (à ma connaissance) d'informations sur la taille.
    C'est à toi de te débrouiller pour avoir l'information sous la main (par exemple en passant la taille du tableau comme argument à la fonction qui l'utilise ou en encapsulant ton tableau dans une structure/classe).
    Une excellent raison pour préferer les vecteurs lorsque tu n'as pas de contraintes de performance/mémoire.

    Une remarque aussi, C++11 n'est pas encore implémenté dans tous les compilo donc pour l'instant attention.

  4. #4
    Rédacteur

    Avatar de Davidbrcz
    Homme Profil pro
    Ing Supaéro - Doctorant ONERA
    Inscrit en
    Juin 2006
    Messages
    2 307
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ing Supaéro - Doctorant ONERA

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 307
    Par défaut
    Ouais mais typiquement gérer des tableaux a la main avec new, ça fait partie des choses qu'il ne faut pas faire.

    Il faut toujours préférer les std::vector à un tableau alloue avec new, quitte à utiliser un allocateur spécifique dans les cas qui le demandent.
    Tu as une gestion automatique de la mémoire et ca, ca n'a pas de prix !

    Et sinon le C++11 est supporté par tous les compilateurs standards "mainstream".
    "Never use brute force in fighting an exponential." (Andrei Alexandrescu)

    Mes articles dont Conseils divers sur le C++
    Une très bonne doc sur le C++ (en) Why linux is better (fr)

  5. #5
    Membre très actif
    Profil pro
    Doctorant
    Inscrit en
    Février 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Doctorant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2011
    Messages : 258
    Par défaut
    j'ai essayé cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    int tab [4];
        tab[0]=12; 
        tab[1]= 42; 
        tab[2]= 72; 
        cout<<"la taille du tab" << tab.size() << endl;
    mais j'ai une erreur avec tab.size() ;

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Code C++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        vector<int> tab(4);
        tab[0]=12; 
        tab[1]= 42; 
        tab[2]= 72; 
        cout<<"la taille du tab" << tab.size() << endl;
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Parcourir un tableau?
    Par kanzarih dans le forum Oracle
    Réponses: 2
    Dernier message: 19/01/2006, 19h45
  2. Meilleure Méthode pour parcourir un tableau
    Par KPitN dans le forum MFC
    Réponses: 7
    Dernier message: 24/02/2005, 16h19
  3. Comment parcourir un tableau
    Par petitsims dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 27/01/2005, 14h33
  4. parcourir un tableau aléatoirement
    Par khayyam90 dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 01/12/2004, 13h44
  5. [langage] Parcourir un tableau
    Par Jibees dans le forum Langage
    Réponses: 13
    Dernier message: 22/04/2003, 14h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo