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

Messages postés
20
Date d'inscription
dimanche 14 avril 2019
Statut
Membre
Dernière intervention
12 octobre 2019
- - Dernière réponse : yg_be
Messages postés
8694
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 octobre 2019
- 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
Afficher la suite 

1 réponse

Messages postés
8694
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
12 octobre 2019
432
0
Merci
bonjour, peux-tu clôturer ceci, puisque tu as ouvert un doublon?
Commenter la réponse de yg_be