Il faut vraiment mettre les points sur les i dans cette discussion.
Je ne parle pas d'un vecteur de vecteurs STL, mais de vecteurs de pointeurs comme en C, du style float **p.
Je ne parle pas de de la fonction std::swap mais d'une fonction membre swap de la classe matrix.
Je parlais d'échanger le contenu de 2 lignes.
Si la STL devait intégrer dans l'avenir une classe matrix, je doute franchement qu'elle se base sur les std::vector.
Et encore une fois ce n'est pas la structure de données que je préconise dans le cas général.
cf. MTL (librairie qui n'est plus maintenue depuis pas mal d'années)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 template<class T,class Alloc> class matrix { ... size_t m,n; value_type **p; matrix(size_t h, size_t l) : m(h), n(l) { p=...} ~matrix() {...} void swap_row(size_t i0, size_t i1) { std::swap(p[i0],p[i1]); } void swap_col(size_t j0, size_t j1) { for (int i=0; i<m; ++i) ...} value_type &operator()(size_t i, size_t j) { return p[i][j]; } const value_type &operator()(size_t i, size_t j) const { return p[i][j]; } ... };