Bonjour, je suis novice en C++
J'essaie de créer une fonction prenant pour argument un entier et un vecteur et renvoyant un vecteur multidimensionnel mais visual studio me renvoie une erreur de mémoire que je ne comprends pas. Si quelqu'un pourrait m'aider...
Voilà la fonction
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
vector< vector<double> > Megamatrice(vector<double> donnees, int const k)
 
{vector<double> kdernieres(k);
   kdernieres=Isoleleskdernieres(donnees,k);  // On isole les k dernières observations
   int const nombrededonnees(donnees.size());
   int const taillemegamatrice (donnees.size()-k);
   int const ligne(3);
   vector< vector<double> > megamatrice(taillemegamatrice, vector<double>(ligne)); //On construit une matrice contenant dans chaque colonne 1. La distance euclidienne 2. L'observation 3. Observation+1 
 
	   for (int i(0) ; i < taillemegamatrice ; i++)
	   {megamatrice[i][1]=donnees[i+k-1]; // Pour les deux dernières lignes on a l'observation et l'observation+1 (nécéssaire pour la prévision)
		megamatrice[i][2]=donnees[i+k];
		vector<double> kvaleursprecedantsi(k); // Pour chaque i, on crée le vecteur contenant i et les k-1 observations précédants i.
		for (int j(0) ; j < k ; j++)
		{kvaleursprecedantsi[j]=donnees[i-k+1+j];
		}
		megamatrice[i][0]=Normeeuclidienne(kdernieres,kvaleursprecedantsi); // La première ligne de la matrice contient les distances euclidiennes
	   }
 
return megamatrice;
}
isoleleskdernieres renvoie les k dernières observations du vecteur. Normeeuclidienne donne la norme euclidienne. Ces fonctions sont OK

et le main qui teste cette fonction

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
int main()
{int const nombrededonnees(10); 
 int const k(5);
 int const ligne(3);
 vector<double> donnees(nombrededonnees);
 int const taillemegamatrice(donnees.size()-k);
 donnees[0]=3;
 donnees[1]=3.9;
 donnees[2]=4.2;
 donnees[3]=3.3;
 donnees[4]=3.7;
 donnees[5]=7.2;
 donnees[6]=5.3;
 donnees[7]=3.2;
 donnees[8]=4.4;
 donnees[9]=3.1;
 vector< vector<double> > megamatrice(taillemegamatrice, vector<double>(ligne));
 //megamatrice=Megamatrice(donnees, k);
return 0;
}
Merci d'avance