Comment supprimer un élément d'un vector?
Résolu
Voking
Messages postés
22
Statut
Membre
-
yg_be Messages postés 24281 Statut Contributeur -
yg_be Messages postés 24281 Statut Contributeur -
Bonjour,
Tout d'abord, une mise en contexte:
je suis en train de créer une fonction nommée "submat" dont le but est de présenter une sous-matrice à partir d'une matrice nommée "A" (de dimension N), en lui retirant la ligne "i" et la colonne "j".
Il se trouve que cette matrice est écrite dans un vector, et que pour trouver une sous-matrice à partir d'elle, il suffit de copier ce vector dans un autre, appelé "Sub_mtx", et de modifier ce dernier.
Mon idée est de supprimer les éléments excédentaires du vector Sub_mtx un à un. J'ai consulté le site cplusplus.com et ai trouvé que la fonction "erase" pouvait convenir. Cependant, une erreur apparaît:
error: no matching function for call to 'std::vector<double>::erase(int)'|
Je ne la comprends pas... qui peut m'expliquer?
NB: voici le morceau de code:
vector<double> submat(const vector<double> &A, int N, int i, int j)
{
vector<double> Sub_mtx(N*N, 0.); // sous-matrice
for(int lgn = 0; lgn < N; lgn++) // remplir la s-m
for(int col = 0; col < N; col++)
Sub_mtx[lgn*N + col] = A[lgn*N + col];
for(int lgn = 0; lgn < N; lgn++) // suppr les élém de la col,
if(lgn != i) // sauf celui de la lgn à suppr
Sub_mtx.erase(lgn*N + j);
Sub_mtx.erase(i*N - i, (i + 1)*N - i); // suppr la lgn, décalée i fois
return Sub_mtx;
}
Tout d'abord, une mise en contexte:
je suis en train de créer une fonction nommée "submat" dont le but est de présenter une sous-matrice à partir d'une matrice nommée "A" (de dimension N), en lui retirant la ligne "i" et la colonne "j".
Il se trouve que cette matrice est écrite dans un vector, et que pour trouver une sous-matrice à partir d'elle, il suffit de copier ce vector dans un autre, appelé "Sub_mtx", et de modifier ce dernier.
Mon idée est de supprimer les éléments excédentaires du vector Sub_mtx un à un. J'ai consulté le site cplusplus.com et ai trouvé que la fonction "erase" pouvait convenir. Cependant, une erreur apparaît:
error: no matching function for call to 'std::vector<double>::erase(int)'|
Je ne la comprends pas... qui peut m'expliquer?
NB: voici le morceau de code:
vector<double> submat(const vector<double> &A, int N, int i, int j)
{
vector<double> Sub_mtx(N*N, 0.); // sous-matrice
for(int lgn = 0; lgn < N; lgn++) // remplir la s-m
for(int col = 0; col < N; col++)
Sub_mtx[lgn*N + col] = A[lgn*N + col];
for(int lgn = 0; lgn < N; lgn++) // suppr les élém de la col,
if(lgn != i) // sauf celui de la lgn à suppr
Sub_mtx.erase(lgn*N + j);
Sub_mtx.erase(i*N - i, (i + 1)*N - i); // suppr la lgn, décalée i fois
return Sub_mtx;
}
Configuration: Windows / Chrome 77.0.3865.90
A voir également:
- Comment supprimer un élément d'un vector?
- Supprimer rond bleu whatsapp - Guide
- Comment supprimer une page sur word - Guide
- Impossible de supprimer un fichier - Guide
- Comment supprimer un compte gmail - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide