Erreur "no matching function"
Voking
Messages postés
22
Statut
Membre
-
yg_be Messages postés 24281 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 24281 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
- No video input ✓ - Forum Matériel & Système
- No video input enter sleep mode ✓ - Forum Matériel & Système
- Dvi no signal ✓ - Forum Matériel & Système
- Erreur t32 ✓ - Forum Livebox
1 réponse
yg_be
Messages postés
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 585
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
22
Statut
Membre
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
24281
Date d'inscription
Statut
Contributeur
Dernière intervention
1 585
>
Voking
Messages postés
22
Statut
Membre
as-tu essayé la suggestion avec begin?