2009-08-17 12 views
4

Je voudrais utiliser un vecteur 3-d pour stocker et ajouter des valeurs entre certains calculs en C++. J'ai des problèmes pour ajouter la troisième dimension à mon vecteur. Ce que je voudrais obtenir est un vecteur que pour chaque itération met dans un vecteur 2-D et ici que les premières valeurs pour chaque vecteur ... Alors L'entrée ressemblerait à quelque chose comme çaAjouter des valeurs à un vecteur 3-d en C++

1 3 7 9 
- - - - 

Ensuite, Plus tard, je voudrais ajouter des valeurs aux endroits marqués - donc à la fin de la matrice ressemblerait à quelque chose comme ça (pour chaque itération) (seulement montré 2-d ...)

1 3 7 9 
2 5 7 
3  2 
1 

en ce moment J'ai du mal à ajouter les premiers éléments. Et j'utilise le vecteur 3-D sollist comme vecteur global. Mes valeurs tableau ont toutes la même quantité d'éléments qui sont> 0,5, ce n'est donc pas où l'erreur est.

vector<vector<vector<int>>>sollist; 


void sol(array& values, int& iter) 
    {int i; 
    sollist.push_back (vector<vector<int>>()); 

     for (i=0;i<10;i++) 
    if (values[i]>0.5) 
    sollist[iter][0].push_back(i); 
    } 

Merci beaucoup pour toute aide et un excellent forum ... /Buxley

Répondre

4

Je pense que vous devez faire quelque chose comme ça.

sollist.push_back(vector<vector<int>>()); 
sollist[0].push_back(vector<int>()); 
sollist[0][0].push_back(value); 
+0

Oui, c'était ça ... Merci ... Je suis juste devenu aveugle après avoir regardé mon problème pendant quelques heures ... –

5

Je pense vraiment que vous seriez mieux à l'aide d'une bibliothèque de matrice existante tthan prendre cette approche - il y a très peu de choix, Google pour « bibliothèque matricielle C++ ». Si vous devez rouler le vôtre, vous devez certainement implémenter votre propre classe Matrix plutôt que de jouer avec des vecteurs nus.

+0

Je ne connais pas la taille de mon tableau 3D final et donc Je pensais que je ferais mieux d'utiliser des vecteurs ... Je ne sais pas si c'est le cas. Y a-t-il un autre problème avec mon approche que de dire que c'est un peu compliqué? –

+1

La plupart des bibliothèques matricielles ne supportent pas ce que veut mrbuxley. Je sais ce qu'il appelle un "vecteur 3-d" comme un tenseur, mais la définition habituelle des tenseurs exige qu'elle soit régulière, tandis que mrbuxley veut que les vecteurs 1-d constituant les vecteurs 3-d aient une longueur différente. Il peut être possible de baser une solution de Matrix où Matrix provient d'une bibliothèque matricielle existante, mais je me demande alors pourquoi utiliser une bibliothèque existante si vous avez seulement besoin d'une partie triviale. –