Comment supprimer un élément d'un vector?
Résolu
Voking
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
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
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour, peux-tu clôturer ceci, puisque tu as ouvert un doublon?