Comment mettre en œuvre vectoriel 2D array?
Je suis en utilisant la classe vector de la STL de la bibliothèque pour la première fois. Comment dois-je ajouter une ligne spécifique du tableau de vecteurs?
struct x{
vector <vector <int> > v;
int row;
};
vector< int* > my ints;
int add;
si je voulais ajouter à la première ligne de v avec le premier pointeur d'entiers, pouvais-je faire
myints[0]->v[myints[0]->row].push_back(add);
Est cette méthode fine pour créer un 2 D de vecteur de vecteur de int
s où chaque ligne pourrait être de longueur différente (c'est à dire avoir un nombre différent de colonnes)?
La célèbre Bibliothèque de modèles Standard de la Bibliothèque
vector< int* > my ints;
n'est pas valide en C++. Nous allons essayer de nouveau cette question, avec un compilable cas de test qui reproduit le problème.myints[0]
est int*
. Ce que le diable est myints[0]->v
?OriginalL'auteur John Smith | 2012-03-14
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas exactement sûr de ce que le problème est, que votre exemple de code comporte plusieurs erreurs et n'est pas vraiment clair ce que vous essayez de faire. Mais voici comment ajouter une ligne spécifique d'un 2D vectoriel:
Est-ce répondre à votre question? Si non, pourriez-vous essayer d'être plus précis quant à ce que vous rencontrez des problèmes avec?
OriginalL'auteur Moritz
Si vous connaissez la (maximum) nombre de lignes et de colonnes à l'avance, vous pouvez utiliser
resize()
pour initialiser un vecteur de vecteurs et ensuite de le modifier (et l'accès à des éléments avecoperator[]
. Exemple:Une autre possibilité est d'utiliser un vecteur et de diviser l'id de plusieurs variables, l'accès comme
vector[(row * columns) + column]
.OriginalL'auteur Roi Danton
Suffit d'utiliser les méthodes suivantes pour créer un 2-D de vecteur.
OU
Cela va créer une Matrice de taille lignes * colonnes et l'initialise avec zéros parce que nous sommes de passage à zéro(0) comme deuxième argument dans le constructeur, je.e vector < int > (colonnes, 0).
std::vector< std::array<int> >
. Si vous connaissez le nombre exact de lignes ainsi,std::array< std::array <int> >
.pour enregistrer des pointeurs de la mémoire?
OriginalL'auteur Aditya Goel
vector<vector<int>> matrix;
vector<int> row;
row.push_back(val1);
row.push_back(val2);
matrix.push_back(row);
OriginalL'auteur Madhurya Gandi
Nous pouvons facilement utiliser les vector tableau 2d. Nous utilisons redimensionner() la méthode à cette fin.
Le code ci-dessous peut être utile pour comprendre cette question.
Extrait De Code :
OriginalL'auteur rashedcs
Une autre façon de définir un 2-vecteur d est de déclarer un vecteur de de pair.
Pour le 3-d vecteurs de prendre un coup d'oeil à n-uplet et make_tuple.
OriginalL'auteur Varun Garg
J'utilise ce bout de code . fonctionne très bien pour moi .les copier et de les exécuter sur votre ordinateur. vous l'aurez compris par vous-même .
OriginalL'auteur Ridowan Ahmed