2013-05-17 1 views
1

в моем коде я не могу распечатать значение, назначенное в вектор.как распечатать значения из вектора под структурой

#include <iostream> 
#include <algorithm> 
#include <string> 
#include <iomanip> 
#include <limits> 
#include <stdio.h> 
#include <sstream> 
#include <vector> 


using namespace std; 
using std::stringstream; 



string pMem, comment, sGen, val,input,id,size,inits,incs; 

double pmemSize =0; 

char t[10], m[256],init[10],inc[10]; 


struct rootset { 
    double totSize; 
    double *rStrtPtr; 
    double *rEndPtr; 
    vector<double> physicalM; /* This is the size of physical memory i need to assign*/ 

    struct generations { 
    double totSize; 
    const char *genStrtPtr; 
    const char *genEndPtr; 
    int numOfGen; 
    string genName; 

    struct object { 
     double objSize; 
     const char *objStrtPtr; 
     const char *objEndPtr; 
     string id; 
     char markBit; 
     char objPtr; 
    }; 

    struct freeList { 
     double freeSpace; 
     int flNumb; 
    }; 
    }; 
}; 
int main() 
{ 
    int pmemSize; 
    cout<<" ENter the size "<<endl; 
    cin >> pmemSize; 
    vector<rootset> pRootSet; 
    pRootSet.push_back(rootset()); 
    pRootSet[0].totSize = pmemSize; 
    pRootSet[0].physicalM.reserve(pmemSize); 

    for (int s=0; s<pmemSize; ++s) 
     pRootSet[0].physicalM[0] =s; 

    vector<double>::iterator it; 

    for(it = pRootSet[0].physicalM.begin(); it!= pRootSet[0].physicalM.end(); ++it) 
     cout <<"Printing it: " <<(*it)<<endl; 
} 

Мне в основном нужно назначить некоторое пространство в физической памяти, предоставленной пользователем. Я думал, что буду использовать векторы. Но я не могу напечатать значения, которые я вхожу в физический.

+0

У вас возникли ошибки? Кто они такие? – 0x499602D2

ответ

1

опечатка индекс physicalM:

for (int s=0; s<pmemSize; ++s) 
     pRootSet[0].physicalM[s] =s; 
          ^^^^ 
+0

Несомненно .. Спасибо. И как мне распечатать его с помощью итератора? Im явно делает это неправильно здесь. – Tuffy

+0

@BrownieTuffy Ваш выходной цикл с итератором выглядит правильно. Производится ли что-то неправильно? Что именно? – Inspired

+1

И вы должны использовать 'resize()' вместо 'reserve()' или 'push_back()' значения, как указано в ответе выше. – Inspired

2

Вопрос заключается в том, что вы не хранить значения в physicalM правильно. Использование:

pRootSet[0].physicalM.push_back(s); 

Тогда ваш итератор должен соответствующим образом распечатать их.