Manière correcte de travailler avec le vecteur de tableaux

Quelqu’un pourrait-il dire quelle est la bonne façon de travailler avec un vecteur de tableaux?

J’ai déclaré un vecteur de tableaux ( vector ) mais j’ai eu une error: conversion from 'int' to non-scalar type 'float [4]' requested lors de la tentative de resize . Qu’est-ce qui ne va pas?

Vous ne pouvez pas stocker de tableaux dans un vector ou tout autre conteneur. Le type des éléments à stocker dans un conteneur (appelé type de valeur du conteneur) doit être à la fois constructible et assignable. Les tableaux ne sont ni l’un ni l’autre.

Vous pouvez toutefois utiliser un modèle de classe de array , comme celui fourni par Boost, TR1 et C ++ 0x:

 std::vector > 

(Vous voudrez remplacer std::array par std::tr1::array pour utiliser le modèle inclus dans C ++ TR1, ou boost::array pour utiliser le modèle des bibliothèques Boost . Vous pouvez également écrire votre propre template ; c’est assez simple.)

Utilisation:

 vector> vecArray; //both dimensions are open! 

Il n’y a pas d’erreur dans le morceau de code suivant:

 float arr[4]; arr[0] = 6.28; arr[1] = 2.50; arr[2] = 9.73; arr[3] = 4.364; std::vector vec = std::vector(); vec.push_back(arr); float* ptr = vec.front(); for (int i = 0; i < 3; i++) printf("%g\n", ptr[i]); 

SORTIE EST:

6.28

2,5

9,73

4.364

EN CONCLUSION:

 std::vector 

est une autre possibilité en dehors de

 std::vector> 

que James McNellis a suggéré.

Chaque élément de votre vecteur est un float[4] , donc lorsque vous redimensionnez chaque élément, il doit être initialisé par défaut à partir d’un float[4] . Je suppose que vous avez essayé d’initialiser avec une valeur int comme 0 ?

Essayer:

 static float zeros[4] = {0.0, 0.0, 0.0, 0.0}; myvector.resize(newsize, zeros);