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
isoleleskdernieres renvoie les k dernières observations du vecteur. Normeeuclidienne donne la norme euclidienne. Ces fonctions sont OK
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; }
et le main qui teste cette fonction
Merci d'avance
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; }
Partager