OVH Cloud OVH Cloud

slice et slice_array

1 réponse
Avatar
Boris Sargos
Bonjour,

j'ai implémenté la classe Matrix telle que le suggère Stroustrup dans son
livre "le langage C++". J'ai en outre écrit la fonction membre suivante, qui
retourne la colonne iRow de la matrice :

std::valarray<double> MyMatrix::Row ( int iRow ) const;

Tout compile. Mais j'ai de gros soucis à l'exécution, lors de l'appel du
destructeur de mon valarray retourné par ma fonction MyMatrix::Row(int).
Ce que je ne comprends pas, c'est :

1) pourquoi l'ordinateur m'agresse à l'exécution alors que ça compile ?
2) pourquoi ne peut-on pas retourner un slice_array à la place d'un
valarray (dixit Stroustrup) ?

Mathématiquement, MyMatrix::Row(int) renvoie un vecteur. Comment créer une
classe MyVector compatible avec cette fonction MyMatrix::Row(int) ?


Merci beaucoup.

1 réponse

Avatar
Gabriel Dos Reis
"Boris Sargos" writes:

| Bonjour,
|
| j'ai implémenté la classe Matrix telle que le suggère Stroustrup dans son
| livre "le langage C++". J'ai en outre écrit la fonction membre suivante, qui
| retourne la colonne iRow de la matrice :
|
| std::valarray<double> MyMatrix::Row ( int iRow ) const;
|
| Tout compile. Mais j'ai de gros soucis à l'exécution, lors de l'appel du
| destructeur de mon valarray retourné par ma fonction MyMatrix::Row(int).
| Ce que je ne comprends pas, c'est :
|
| 1) pourquoi l'ordinateur m'agresse à l'exécution alors que ça compile ?

San voir ton code, je ne peux en dire plus.

| 2) pourquoi ne peut-on pas retourner un slice_array à la place d'un
| valarray (dixit Stroustrup) ?

Parce que c'était une restriction inutile (erreur) de la norme. C'est
corrigé mainitenant.

| Mathématiquement, MyMatrix::Row(int) renvoie un vecteur. Comment créer une
| classe MyVector compatible avec cette fonction MyMatrix::Row(int) ?

Je ne comprends pas très bien cette question.

-- Gaby