Comment supprimer un élément d'un vector?

Résolu/Fermé
Voking Messages postés 21 Date d'inscription dimanche 14 avril 2019 Statut Membre Dernière intervention 13 octobre 2019 - 5 oct. 2019 à 21:33
yg_be Messages postés 22697 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 - 12 oct. 2019 à 18:25
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

yg_be Messages postés 22697 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 avril 2024 1 471
12 oct. 2019 à 18:25
bonjour, peux-tu clôturer ceci, puisque tu as ouvert un doublon?
0