C++ - tab1[] = tab2[]

Fermé
Utilisateur anonyme - 25 janv. 2006 à 18:14
 Utilisateur anonyme - 26 janv. 2006 à 17:35
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

jhgffre Messages postés 160 Date d'inscription lundi 14 novembre 2005 Statut Membre Dernière intervention 12 avril 2006 39
25 janv. 2006 à 19:27
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
mamiemando Messages postés 33083 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 avril 2024 7 749
25 janv. 2006 à 20:15
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
Utilisateur anonyme
26 janv. 2006 à 17:35
merci ça marche.....
0