所以我需要使用累积来对向量中的一些双精度值求和,其中我的 VECTOR 实际上是一个指向对象的指针。
现在,当我对 initVal 使用带有 int 的累积时,它会运行给我一个类似 -3.3695e+008 的答案,但是当我在那里放一个双精度时,我会得到“'+':指针加法需要整数操作数”。我尝试了很多方法来修复它,考虑到在累积算法中传递的指针,我搜索了一些关于取消引用迭代器的东西,但我无法解决我的问题(我猜是由于 unexpireance)累积:
void calcDMean(){
dMean= 0.0 ;
vector<CData*> :: iterator it = m_vectorData.begin();
int n = m_vectorData.size();
// dMean = accumulate(m_vectorData.begin(), m_vectorData.end(), 0.0);
dMean = accumulate(it,m_vectorData.end(),0.0);
dMean = dMean/n;
}
还有一些其余的代码(数据通过第二类中的“文件构造函数”传递:
class CData {
int m_iTimeID;
double m_dData;
public:
CData (){
m_iTimeID = 0;
m_dData = 0;
}
CData (const CData& obekt){ //Copy
m_iTimeID=obekt.m_iTimeID;
m_dData=obekt.m_dData;
}
int getID() const{ //GET ID
return m_iTimeID;}
double getData() const { //GET DATA
return m_dData;}
double operator+(CData &obekt){
return (m_dData + obekt.m_dData);
} ;
double operator+(double b){
return (m_dData + b);
} ;
};
class CCalc3SigmaControl {
vector<CData*> m_vectorData;
double sigmaUp;
double sigmaDown;
double dMean;