begin process at 2012 05 30 19:02:51
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Au secours

 > 

Tri de tableau d'objets...


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Tri de tableau d'objets...

jeudi 8 décembre 2005 à 15:03:00 | Tri de tableau d'objets...

dbiare

Bonjour J’ai un petit souci en Visual C++6… Je détiens, après traitement, deux indices (i et j) d’un même tableau d’objet : m_oaBras[]. Je dois permuter ces deux objets. Si je déclare x comme étant un objet (comme ceux dans le tableau) et si j’écris : x=m_oaBras[j];m_oaBras[j]=m_oaBras[i];m_oaBras[i]=x , bien évidement cela ne fonctionne pas. Normal ! Es-ce que quelqu’un peux me dire comment procéder ? Merci d’avance
jeudi 8 décembre 2005 à 15:46:02 | Re : Tri de tableau d'objets...

luhtor

Redéfinie l'opérateur = dans ta classe:

class A
{
...
A & operator = (const A & _which)
{
    this->donne1 = _which.donne1;
    this->donne2 = _which.donne2;

    // tu fais ca pour toute ta classe, tu copies les membres de _which dans *this;
}
}


jeudi 8 décembre 2005 à 15:47:13 | Re : Tri de tableau d'objets...

luhtor

oups pardon, n'oublies pas:

return *this;

à la fin de la fonction.
jeudi 8 décembre 2005 à 15:59:39 | Re : Tri de tableau d'objets...

vecchio56

Administrateur CodeS-SourceS
Il faut aussi faire attention à l'auto-affectation (dans ce cas, il n'y a rien a faire) A & operator = (const A & _which) { if(this != &_which) { this->donne1 = _which.donne1; this->donne2 = _which.donne2; } return *this }
jeudi 8 décembre 2005 à 22:13:27 | Re : Tri de tableau d'objets...

luhtor

C'est la première fois que je vois ca. L'auto affectation n'est en général pas un problème. Mais j'ai du le rencontrer une fois.
Dans les include du C++, ils font pas ce test. (il me s emble)
jeudi 8 décembre 2005 à 22:31:33 | Re : Tri de tableau d'objets...

vecchio56

Administrateur CodeS-SourceS
Un autre problème important est celui de l'autoaffectation. Non seulement affecter un objet à lui-même est inutile et consommateur de ressources, mais en plus cela peut être dangereux. En effet, l'affectation risque de détruire les données membres de l'objet avant même qu'elles ne soient copiées, ce qui provoquerait en fin de compte simplement la destruction de l'objet ! http://casteyde.christian.free.fr/cpp/cours/online/x3244.html
vendredi 9 décembre 2005 à 09:40:24 | Re : Tri de tableau d'objets...

luhtor

Ca "consommateur de ressources", c'est pas valable comme argument, deja car copier un objet sur lui meme, ca doit pas etre fréquent, alors que effectuer le test de comparaison a chaque fois que le constructeur de copie est appelé, ca c'est une perte de tps inutile. Par contre, pour ce qu'il dit ensuite, je comprend pas pourquoi il détruirait l'objet membre avant de copier la valeur.
Quand tu fais
int x = 2;
x = 4; <= ici x ne va pas est détruit. Donc pourquoi, ce serait le cas pour les membres de la classe ?

Et si le test était vraiment vitale, il serait dans les includes du C++. Enfin je comprend pas bien.

vendredi 9 décembre 2005 à 10:40:01 | Re : Tri de tableau d'objets...

vecchio56

Administrateur CodeS-SourceS
La comparaison est une comparaison d'adresse, c'est donc très vite fait, et ca vaut largement le coup de la faire. A mon avis c'est une optimisation intéressante. Voici ce que j'ai trouvé dans le template list de VC++: _Myt& operator=(const _Myt& _Right) { // assign _Right if (this != &_Right) assign(_Right.begin(), _Right.end()); return (*this); } C'est exactement ca. Je ne comprends pas non plus l'autre argument
vendredi 9 décembre 2005 à 19:39:25 | Re : Tri de tableau d'objets...

vecchio56

Administrateur CodeS-SourceS
Voici un exemple donné par l'auteur, qui justifie qu'on doit vérifier l'auto-affectation class A { char *m_szData; public: A &operator=(const A &source) { // Libération de m_szData : delete[] m_szData; // Copie : m_szData = new char[strlen(source.m_szData) + 1]; strcpy(m_szData, source.m_szData); return *this; } ... }; A a("hello"); a = a; // Plantage. En effet, a= a exécute, sans protection : delete m_szData; m_szData = new char[strlen(m_szData) + 1]; // m_szData n'est plus valide et peut valoir n'importe quoi. Du coup strlen peut planter, ou la copie qui suivra, etc.
samedi 10 décembre 2005 à 00:43:44 | Re : Tri de tableau d'objets...

luhtor

Oui ok, mais la c'est quand meme gros la plante potentielle :)



1 2

Cette discussion est classée dans : objet, tableau, tri, objets, oabras


Répondre à ce message

Sujets en rapport avec ce message

Recherche tri d'un tableau d'adresse objet [ par rtnode ] Bonjour à tous,je soumets un problème qui me semble à priori trés banal mais dont je n'ai pas trouvé de bonne solution.Dans nombre de cas, je dispose utilisation de delete sur des objets... ca marche comment ? [ par vincemail ] Bonjour, je voudrais savoir comment fonctionne delete sur des objets.. Par exemple j'ai un objet Tableau qui contient un membre *tableau (qui est bien Tableau d'objets [ par nisaloncaje ] Bonjour, je suis débutant en c++ et j'aimerais savoir comment faire pour créer un tableau dynamique d'objets, c'est à dire un tableau d'objet donc je Tableau d'objets [ par gaat ] Bonjour, J'ai une question probablement toute simple : J'utilise une shape (TShape) et j'aimerais en avoir huit avec la même propriété. Comme je gestion d'une multitude d'objets, interactions dans l'espace [ par cppdupdup34 ] alors voila j'ai une petite question !Comment gerer une multitude d'objets géométriques dans un espace tridimensionnel ?A titre d'exemple, sur une map tri tableau structure [ par blinix123 ] y a t'il une difference entre un tri de tableau normal (dichotomie,tri a bulle,...) et un tri de tableau de structure (donc un tableau qui contient de tableau d'objet [ par dark_naruto25 ] Coucou tout le monde ! J'essai de faire un tableau d'objet, je déclare donc mon tableau : Bitmap tab[10]; Je suis quasiment sûr que le cette ligne app Quelle est la meilleur solution pour deplacer des objets independemment [ par adess00 ] Coucou Je fais un structure qui enregistre la position de chaque objets dans ma scene Et je voudrais savoir quelle est la meilleur methode Voici cell Tri tableau de structure [ par chental ] Salut à tous,Quelqun pourrait m'aider à trier à un tableau de structure ?Tri par nom et code;j'essaie le qsort mais je n'y arrive pasVoici ma structur probléme avec création de tableau d'objet [ par tibob51 ] Bonjour a tous,J'ai lu dans mon bouquin de c++ (j'apprend tout seul par passion) que l'onpeut créer un tableau d'objetexemple:class A{..A(int i);//con


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,727 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales