gpt4 book ai didi

c++ - 这个迭代器没有迭代,怎么了?

转载 作者:行者123 更新时间:2023-11-30 04:36:47 25 4
gpt4 key购买 nike

问题是迭代器没有遍历循环。我不知道为什么。 #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 循环中,是的,这都是错误测试,但它是一段相当重要的代码。伙计们干杯,一直在学习。

最佳答案

您没有清除输入循环之间的 EnergyProbability。 (*ns)[0] 因此从第一个输入中看到冗余存储的值,忽略实际在 [2] 中的新值,然后是 [4] 等。只需添加 EnergyProbability.clear(),然后再将更多值读入其中。

关于c++ - 这个迭代器没有迭代,怎么了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4333170/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com