2017-10-11 4 views
2

J'ai écrit ce double forloop et attend de voir si cela produirait toutes les valeurs dans ce vecteur, mais cela ne fonctionne pas, il y a une erreur pour les données [i] .at (j) dont je ne pas tout à fait comprendreC++ sortie 2D Vector

vector<int> data; //it filled with some integers with x rows and y columns 

for (int i = 0; i < data.size; ++i) 
{ 
    for (int j = 0; j < col; ++j) cout << data[i].at(j) << ' '; 
     cout << endl; 
} 

J'ai aussi essayé cette méthode, qui ne fonctionne pas non plus data.at (i) .at (i) est une erreur

for (int i = 0; i < data.size; ++i) 
{ 
    for (int j = 0; j < col; ++j) cout << data.at(i).at(j) << ' '; 
    cout << endl; 
} 

est-ce que l'une de ces travailler avec une solution mineure? ou ils ne fonctionnent tout simplement pas?

+1

C'est parce que 'int's n'ont pas' .at' fonction. Vous n'avez pas de vecteur 2D. –

+0

Il suffit de changer le type de vecteur pour doubler? et si je veux utiliser un vecteur tapé int encore? – rrc

+0

Non @rrc ce ne serait pas. Vérifiez ma réponse s'il vous plaît. – gsamaras

Répondre

2

Mise au point ici:

data[i].at(j) 

Lorsque vous indexez votre vecteur à la position i, vous obtenez le nombre i -ème de celui-ci. C'est de type int. Puis vous demandez une méthode nommée at() sur un int Ceci n'est pas fourni par le type primitif int.

Si vous essayez d'imiter un vecteur 2D avec un 1D, alors vous pouvez le faire:

for (int i = 0; i < data.size; ++i) 
{ 
    for (int j = 0; j < col; ++j) 
     cout << data[i + j * col] << ' '; 
    cout << endl; 
}