Accueil > Forum > > > > Tri de tableau d'objets...
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
|
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
|
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
|
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
|
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 :)
|
|
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
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|