Bonne façon 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<float[4]>
) mais error: conversion from 'int' to non-scalar type 'float [4]' requested
lors de la tentative de resize
. Ce qui ne va pas?
Vous ne pouvez pas avoir un vecteur de natif de tableaux, parce qu'ils ne sont ni cessibles, ni copiable.
C'est une des joies de C++, d'apprendre à rechercher des choses comme "std" et "chaîne c" et de ne se rendre compte de ce que vous avez fait lorsque vous cliquez sur le bouton "rechercher".
Des points supplémentaires pour corriger les signes de ponctuation dans la construction d'une phrase qui pour la plupart auraient été de trop.
C'est une des joies de C++, d'apprendre à rechercher des choses comme "std" et "chaîne c" et de ne se rendre compte de ce que vous avez fait lorsque vous cliquez sur le bouton "rechercher".
Des points supplémentaires pour corriger les signes de ponctuation dans la construction d'une phrase qui pour la plupart auraient été de trop.
OriginalL'auteur Pulkit Sinha | 2011-01-06
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas stocker des tableaux dans un
vector
ou tout autre récipient. Le type des éléments stockés dans un contenant (appelé le conteneur type de valeur) doit être à la fois copie constructibles et cessibles. Les tableaux sont ni.Vous pouvez, cependant, utiliser un
array
modèle de classe, comme celui fourni par Boost, TR1, et C++0x:(Vous aurez envie de le remplacer
std::array
avecstd::tr1::array
pour utiliser le modèle inclus dans C++ TR1, ouboost::array
à utiliser le modèle à partir des bibliothèques Boost. Alternativement, vous pouvez écrire votre propre; il est assez simple.)std::array
. 😉La deuxième phrase n'est plus vrai en C++11, mais le reste est toujours correcte. Le problème en C++11, c'est que les tableaux ne sont pas
Erasable
, au moins avec la valeur par défaut de l'allocateur.Pour les exigences applicables aux conteneurs STL(post C++11), jetez un oeil à ce fil de discussion, "A C++11 nouvelles exigences pour les éléments de conteneurs STL, et comment?".
OriginalL'auteur James McNellis
Utilisation:
vecteur de vecteur n'est pas contigu, dans le cas où cela est requis par les OP.
en c++11, c'est parfaitement légal.
OriginalL'auteur Nawaz
Il n'y a pas d'erreur dans le morceau de code suivant:
DE SORTIE EST:
6.28
2.5
9.73
4.364
EN CONCLUSION:
est une autre possibilité en dehors de
que James McNellis suggéré.
cette juste fait le vecteur non-copiable.
OriginalL'auteur
Chaque élément du vecteur est un
float[4]
, de sorte que lorsque vous redimensionnez chaque élément doit initialisé par défaut à partir d'unfloat[4]
. - Je le prendre vous avez essayé d'initialiser avec unint
valeur comme0
?Essayer:
[4]
est au mauvais endroit. Aussi, les objets statiques de stockage sont automatiquement zéro-initialisé.Ah! Fixe maintenant, +1! 🙂
vous avez raison. Sert de moi pour répondre à tard dans la nuit et pas de tester mon code échantillons. Fixe. Merci beaucoup!
OriginalL'auteur Mark Ransom