C++ - tab1[] = tab2[]

smellems -  
 smellems -
bonjour

question de c++

si j'ai 2 tableau de taille égal est-ce que je peux par une cimple affectation les rendre =???

int x[4] = {1,2,3,4}
int y[4] = {5,6,7,8}

x = y //mais ça marche pas...

merci de votre aide

3 réponses

  1. jhgffre Messages postés 160 Statut Membre 39
     
    Non je crois pas que ça marche. Tu devrais le faire avec une boucle.

    for(i=0; i<=3; i++) //pour affecter le contenu de x à y
    x[i]=x[i];

    i<=3 dans le cas ou il n'y a que 4 éléments, comme dans ton exemple. Sinon il faut adapter à la taille du tableau.

    a+
    0
  2. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 944
     
    Non c'est faut car tu fais une copie de pointeur (x désigne l'adresse du début du premier tableau et y celle du second).

    Puisque tu fais du c++ tu devrais plutôt utiliser la class std::vector, qui te permettra de faire une copie directement avec un = :

    #include <vector>
    #include <iostream>
    
    void show_vector(const vector<int> & v){
      std::cout << "[";
      for(std::size_t i;i<v.size;++i){
        std::cout << v[i] << " ";
      }
      std::cout << "]" << std::endl;
    }
    
    int main( ){
       std::vector<int> x,y;
    
      //premier vecteur
      x.push_back(1);
      x.push_back(2);
      x.push_back(3);
      x.push_back(4);
    
      //deuxième vecteur
      y.push_back(5);
      y.push_back(6);
      y.push_back(7);
      y.push_back(8);
    
      //affichage
      std::cout << "Avant :"<<std::endl;
      show_vector(x);
      show_vector(y);
    
      //affectation
      y = x;
    
      //affichage
      std::cout << "Après :"<<std::endl;
      show_vector(x);
      show_vector(y);
      return 0;
    }

    Bonne chance
    0