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 :

remplissage d'un vecteur de type vector


Sujet :

C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut remplissage d'un vecteur de type vector
    bonjour,
    j'ai besoin de remplire un vecteur de type vector à partir de plusieurs vecteur
    supposant je veux remplire à partir de 2 vecteurs seulement:
    vector<int>v1(5);//vecteur de taille 5
    vector<int>v2(7);//vecteur de taille 7

    et vector<int>v3;//vecteur résultat

    maintenant je veux remplir v3 de la façon suivante
    un entier à partir de V1 puis de V2 puis de V1...
    v3[0]=v1[0];
    v3[1]=v2[0];
    v3[2]=v1[1];
    v3[3]=v2[1];
    ...
    à chaque itération je prends un entier d'un vecteur différent

    j'ai pas su comment faire la boucle(sachant que j'ai plusieurs vecteurs et non pas 2 et de taille différent)
    merci d'avance

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 6
    Par défaut
    if(v1.size() < v2.size())
    {
    v3.resize(v1.size())
    }

    else
    {
    v3.resize(v2.size());
    }

    for(unsigned int i = 0; i < v3.size(); i += 2)
    {
    v3[i] = v1[i / 2];
    v3[i + 1] = v2[i / 2];
    }

    J'ai pas tester mais ca devrait marcher.

  3. #3
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut
    mais non, j'ai bien préciser
    les vecteur n'ont pas la même taille, c'est ça mon problème

  4. #4
    Membre Expert
    Avatar de coyotte507
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    1 327
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 327
    Par défaut
    Salut.

    Tu peux faire ainsi:

    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
    vector<int>* TabVecteurs[nbvecteurs] = {&v1, &v2, ...};
     
    vector <int> vtotal; //le vecteur dans lequel on stocke tout
    vector <int>* global_it; //un itérateur sur le tableau de pointeurs de vecteurs
     
    //On parcoure le tableau de vecteur
    for (global_it = TabVecteurs; global_it != TabVecteurs + nbvecteurs; global_it++)
    {
         vector<int>::iterator it; 
         //et là le vecteur courant
         for (it = global_it->begin(); it != global_it->end(); ++it)
         {
                vtotal.push_back(*it);
         }
    }

  5. #5
    Inactif
    Inscrit en
    Novembre 2007
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 369
    Par défaut
    je crois que vous m'avez mal compris
    le remlissage n'est pas vecteur aprés vecteur

    c'est en fait chaque case de chaque vecteur à part

    voila:
    v3[0]=v1[0];
    v3[1]=v2[0];
    v3[2]=v1[1];
    v3[3]=v2[1];

    et non pas
    v3[0]=v1[0];
    v3[1]=v1[1];
    v3[2]=v2[0];
    v3[3]=v2[1];

  6. #6
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    le code de Nitroreg correspond parfaitement à ta description, non?
    mais faut corriger l'init de v3

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if(v1.size() < v2.size())
        {
        v3.resize(2*v1.size())
        }
    else
        {
        v3.resize(2*v2.size());
        }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplissage d'un vecteur avec valeur milieu imposée
    Par amarion dans le forum MATLAB
    Réponses: 6
    Dernier message: 17/03/2008, 15h25
  2. chercher un max et min dans une liste de type vector
    Par sandy07 dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 29/05/2007, 15h23
  3. Réponses: 2
    Dernier message: 16/05/2007, 16h13
  4. Unification des types "vector"
    Par Bourrine dans le forum SL & STL
    Réponses: 4
    Dernier message: 02/02/2007, 13h57
  5. [Debutant][Collection] Création d'un vecteur de type d'une classe
    Par Tao® dans le forum Collection et Stream
    Réponses: 11
    Dernier message: 22/04/2004, 17h06

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