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

SL & STL C++ Discussion :

Initialisation d'un std::vector<std::vector<std::strnig> > vec;


Sujet :

SL & STL C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 61
    Par défaut Initialisation d'un std::vector<std::vector<std::strnig> > vec;
    Bonjour,
    Voila je voudrais creer un vecteur de vecteur de string avec la string egale a deux espaces i-e " ". Mais le soucis c'est que je ne vois pas comment faire.
    Pour un simple std::vector<std::string> vec, je sais qu'il faut faire vec.push_back(" ") et pour afficher la valeur faire un std::cout << vec[i]; mais pour un vecteur de vecteur je ne trouve pas. Merci pour votre aide.

    P.S: DSL pour les accents -> clavier qwerty

  2. #2
    Membre confirmé
    Inscrit en
    Décembre 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 26
    Par défaut
    Pour un tableau crée dynamiquement (avec 'new') il faut que au début tu crées tous les rangées. Analogue pour un std::vector mais ici tu peut laisser la classe std::vector à construire les rangées:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    	std::vector<std::vector<std::string>> mat;
     
    	mat.resize(10);
    Après tu peut utiliser mat[k] comme d'habitude en appelant push_back pour ajouter des éléments:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    	for (int i = 0; i < 10; ++i)
    		for (int j = 0; j < 10; ++j)
    			mat[i].push_back("a");
    Pour verifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	for (int i = 0; i < 10; ++i)
    	{
    		for (int j = 0; j < 10; ++j)
    			std::cout << mat[i][j];
    		std::cout << std::endl;
    	}

  3. #3
    Rédacteur/Modérateur
    Avatar de JolyLoic
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    5 463
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Yvelines (Île de France)

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

    Informations forums :
    Inscription : Août 2004
    Messages : 5 463
    Par défaut
    Un des constructeurs de vector prend en paramètre le nombre d'éléments et leur valeur initiale.
    Ma session aux Microsoft TechDays 2013 : Développer en natif avec C++11.
    Celle des Microsoft TechDays 2014 : Bonnes pratiques pour apprivoiser le C++11 avec Visual C++
    Et celle des Microsoft TechDays 2015 : Visual C++ 2015 : voyage à la découverte d'un nouveau monde
    Je donne des formations au C++ en entreprise, n'hésitez pas à me contacter.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 61
    Par défaut
    Merci pour vos reponses ca fonctionne.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2008
    Messages
    61
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 61
    Par défaut
    Si maintenant je veux faire une fonction pour ajouer quelque chose dans une des cases puis-je faire directement:
    vec[j][i] := "toto" ou suis-je oblige de faire un iterator pour parcourir mon vecteur de vecteur ?

  6. #6
    Rédacteur
    Avatar de 3DArchi
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    7 634
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 7 634
    Par défaut
    Bonjour,
    vect[i] te retourne un objet de type std::vector<std::string>, sur lequel tu peux appliquer l'opérateur []. Donc vect[i][j] te retourne le jème élément du ième vecteur. A toi de t'assurer que i et j sont corrects et ne dépasse pas les tailles des vecteurs.
    Personnellement, j'ai toujours trouvé bizarre les vecteurs de vecteurs.

Discussions similaires

  1. std::vector semble ne pas utiliser std::move, pourquoi ?
    Par n0-sheep dans le forum SL & STL
    Réponses: 7
    Dernier message: 15/03/2014, 01h25
  2. Réponses: 4
    Dernier message: 04/06/2012, 15h19
  3. Réponses: 3
    Dernier message: 03/02/2011, 18h09
  4. Problème entre boost::array std::copy et les vector
    Par Davidbrcz dans le forum Boost
    Réponses: 4
    Dernier message: 27/03/2008, 19h20
  5. [Vector] Ajouter un Vector dans un autre Vector
    Par VinceFromBcn dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 30/06/2004, 21h54

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