CALCULATRICE MATRICIELLE BOOST

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 12 janv. 2012 à 12:34
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 - 12 janv. 2012 à 16:40
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/53974-calculatrice-matricielle-boost

cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
12 janv. 2012 à 16:40
>> parce que si tu utilise bcp de memoire avec shared_array tu peux etre sure qu'il sera detruis tout seul
Je ne vois pas le rapport.

>> exemple de difernece entre un normal vector et shared_array
Ton exemple n'est pas probant. Tu es sur d'avoir bien compris l'intérêt d'un shard_array ?
Dans ton code, avoir un shared_array ne sert strictement à *rien*.
Un shard_array est un smart pointer, qui au lieu de pointer sur une valeur, pointe sur un tableau de valeur. Ce qui permet effectivement de détruire automatiquement celui-ci. Or, cette automatisation de la destruction, n'a de sens que si tu fais transiter cette structure. Ce qui n'est pas le cas ici. La notion de RAII s'en charge déjà.

Pour simplifier, voici un exemple:

// Pas bien
void func()
{
int* a = new int;
delete a;
}

// Un peu mieux
void func()
{
smart_pointer a = new int;
}

// Bien mieux !
void func()
{
int a;
}

Ici, si tu avais fait un std::vector, celui-ci aurait été détruit *automatiquement* lorsque ta matrice aurait été détruite (puisque c'est la classe Matrice qui a la charge de la destruction des ses attributs).
C'est donc un très mauvais exemple d'utilisation d'un shared_array.

> en plus ya pas bcp de tutoriaux sur boost::shared_array sur le net
Si tu veux faire un exemple d'utilisation, fais-le avec un bon exemple: Un principe de COW (copy on write), ou un flyweight, par exemple.

Je ne suis pas convaincu de ton explication. En plus de cela, il y a pas mal de maladresse dans le code ("Matrice" au lieu de "const Matrice&", bonjour les copies..., du using namespace std; beurk, des variables globales, etc...).

>> et encore pas d'algo pour gerer une chaine de caractere d'operations avec la std::string
C'est faux. Il y a plein de Lexer et de Parser sur ce site...

Pour toutes ces raisons, je supprimerais cette source d'ici 24h.
mosaidrd Messages postés 13 Date d'inscription samedi 18 avril 2009 Statut Membre Dernière intervention 12 janvier 2012
12 janv. 2012 à 15:12
exemple de difernece entre un normal vector et shared_array
typedef float **matrice;
matrice fonction(matrice M1,matrice M2){
matrice tmp;
//tmp=allocation avec new
//operations.....
return tmp;
} //ici tmp n'est pas supprimé
// si tu apel delete [] la fonctions sera
// inutile car elle returnera tmp=NULL;
// si il etai un shared_array il sera
// detruis apré l'appel de la foonction.
mosaidrd Messages postés 13 Date d'inscription samedi 18 avril 2009 Statut Membre Dernière intervention 12 janvier 2012
12 janv. 2012 à 15:05
par ce que si tu utilise bcp de memoire avec shared_array tu peux etre sure qu'il sera detruis tout seul
en plus ya pas bcp de tutoriaux sur boost::shared_array sur le net
et encore pas d'algo pour gerer une chaine de caractere d'operations avec la std::string
je crois qu'il emporte bien du nouveux . :)
cptpingu Messages postés 3837 Date d'inscription dimanche 12 décembre 2004 Statut Modérateur Dernière intervention 28 mars 2023 123
12 janv. 2012 à 12:34
Bonjour.

Une seule question (Pour savoir si je supprime ou non cette source):
- Quel intérêt d'utiliser un boost::shared_array plutôt qu'un std::vector ? Ici, je ne vois pas du tout ce que ça apporte...

À part ça, cette source n'apporte rien de plus que les autres.
Rejoignez-nous