問題是迭代器沒有迭代循環。我不知道爲什麼。 #includes在頭上,就像我的習慣一樣。此迭代器不迭代,最新錯誤?
#include "neutronFileReader.h"
using namespace std ;
neutronFileReader::neutronFileReader()
{
}
list<vector<float> > neutronFileReader::spectrum(char* filename)
{
ifstream fin(filename) ;
string binhi, binlo ;
list<vector<float> > neutronSpectrum ;
list<vector<float> >::iterator nS ;
vector<float> EnergyProbability ;
while(!fin.eof())
{
getline(fin, binlo, ' ') ; //get the binlo string
cout << "binlo: "<<binlo << endl ;
getline(fin, binhi, ' ') ; //get the binhi string
cout<<"binhi: "<<binhi<<endl ;
EnergyProbability.push_back(atof(binhi.c_str())+(atof(binhi.c_str()) - atof(binlo.c_str()))/2) ; //store middle of bin as emission Energy
getline(fin, binlo) ; //try not to waste memory space
cout<<"prob: "<<binlo<<endl ;
EnergyProbability.push_back(atof(binlo.c_str())) ; //store emnission probability
neutronSpectrum.push_back(EnergyProbability) ; //put the vector in the list
//cout<<neutronSpectrum<<endl ;
}
for(nS = neutronSpectrum.begin() ; nS != neutronSpectrum.end() ; nS++) //go through the neutron spectrum
{
EnergyProbability = (*nS) ;
cout << "binval: " << EnergyProbability[0] << " " << "binProb: " << EnergyProbability[1] << endl ;
cout << "binval: " << (*nS)[0] << ", binprob: " << (*nS)[1] << ", memadd: " << &nS << endl ; // print energy & prob to screen
}
return neutronSpectrum ;
}
反正這裏一些幫助將不勝感激,已經向它變成一個while循環,是的,這是所有錯誤的測試,但它的代碼非常重要的一點。歡呼傢伙,一直在學習。
您是否嘗試首先打印列表大小?只是爲了確保你真的有一個列表來遍歷:) – 2010-12-02 08:59:22
最新的問題,它不會編譯?它會崩潰嗎?爲了幫助你,請多描述一下情況。 – Reno 2010-12-02 08:59:35
是什麼讓你覺得它不是迭代? – 2010-12-02 09:00:07