79 votes

Bonne façon de travailler avec le vecteur des 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<float[4]>) mais j'ai obtenu error: conversion from 'int' to non-scalar type 'float [4]' requested en essayant de resize. Qu'est-ce qui ne va pas ?

11voto

Nawaz Points 148870

Utilisation :

vector<vector<float>> vecArray; //both dimensions are open!

9voto

user4066525 Points 41

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<float*> vec = std::vector<float*>();
vec.push_back(arr);
float* ptr = vec.front();
for (int i = 0; i < 3; i++)
    printf("%g\n", ptr[i]);

SORTIE IS :

6.28

2,5

9,73

4,364

EN CONCLUSION :

std::vector<double*>

est une autre possibilité en dehors de

std::vector<std::array<double, 4>>

que James McNellis a suggéré.

4voto

Mark Ransom Points 132545

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

Essayez :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X