Comment supprimer un élément d'un vector? [Résolu]

Signaler
Messages postés
21
Date d'inscription
dimanche 14 avril 2019
Statut
Membre
Dernière intervention
13 octobre 2019
-
Messages postés
11796
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 août 2020
-
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;
}


Configuration: Windows / Chrome 77.0.3865.90

1 réponse

Messages postés
11796
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 août 2020
674
bonjour, peux-tu clôturer ceci, puisque tu as ouvert un doublon?