Erreur "no matching function"
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,
ma dernière question ayant été ignorée, je la réitère. Je souhaite créer une sous-matrice à partir d'une matrice donnée, c'est-à-dire copier cette matrice dans une nouvelle, vide, pour supprimer la i-ème ligne et la j-ème colonne de cette dernière.
Voici la fonction que j'ai codée, permettant de créer une sous-matrice:
Lors de l'exécution, une erreur apparaît:
error: no matching function for call to 'std::vector<double>::erase(int)'
Que signifie-t-elle? Merci de vos réponses! :)
ma dernière question ayant été ignorée, je la réitère. Je souhaite créer une sous-matrice à partir d'une matrice donnée, c'est-à-dire copier cette matrice dans une nouvelle, vide, pour supprimer la i-ème ligne et la j-ème colonne de cette dernière.
Voici la fonction que j'ai codée, permettant de créer une sous-matrice:
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; }
Lors de l'exécution, une erreur apparaît:
error: no matching function for call to 'std::vector<double>::erase(int)'
Que signifie-t-elle? Merci de vos réponses! :)
Configuration: Windows / Chrome 77.0.3865.90
A voir également:
- Erreur "no matching function"
- No signal tv - Guide
- Erreur 3000 france tv - Forum Lecteurs et supports vidéo
- No video input enter sleep mode ✓ - Forum Matériel & Système
- Erreur t32 ✓ - Forum Livebox
- Erreur 0x80070643 - Accueil - Windows
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
je pense que cela signifie que tu ne peux pas appeler la fonction erase (sur un objet de type vector) avec un paramètre de type int.
peut-être ainsi?
moi, je ferais différemment: à la copie, je ne copierais que les données que je veux garder.
je pense que cela signifie que tu ne peux pas appeler la fonction erase (sur un objet de type vector) avec un paramètre de type int.
peut-être ainsi?
Sub_mtx.erase(Sub_mtx.begin() + lgn*N + j);
moi, je ferais différemment: à la copie, je ne copierais que les données que je veux garder.
vector<double> Sub_mtx((N-1)*(N-1), 0.); // sous-matrice for(int lgn = 0; lgn < i; lgn++) // remplir la s-m { for(int col = 0; col < j; col++) Sub_mtx[lgn*(N-1) + col] = A[lgn*N + col]; for(int col = j+1; col < N; col++) Sub_mtx[lgn*(N-1) + col-1] = A[lgn*N + col]; } for(int lgn = i+1; lgn < N; lgn++) // remplir la s-m { for(int col = 0; col < j; col++) Sub_mtx[(lgn-1)*(N-1) + col] = A[lgn*N + col]; for(int col = j+1; col < N; col++) Sub_mtx[(lgn-1)*(N-1) + col-1] = A[lgn*N + col]; }
Voking
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
1
C'est une approche fort intéressante, merci de la proposition! Par curiosité, je souhaiterais également comprendre la méthode où je retire des éléments. La fonction .begin( ) que tu as utilisée donne le premier élément du vector, c'est bien ça? Je ne saisis pas si l'erreur provient du fait que je ne l'ai pas utilisée.
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
1 584
>
Voking
Messages postés
21
Date d'inscription
Statut
Membre
Dernière intervention
as-tu essayé la suggestion avec begin?