我遇到了一个我无法理解的问题。我在main.cpp中的那段代码:
void bisection(double a, double b, std::vector<double>& vctr, const double eps)
{
double x0 = 0.0;
while( abs(a - b) > eps)
{
x0 = (a + b)/2.0; // middle value
double tmp = poly(x0); // to calculate this value only one time
double tmpA = poly(a);
double tmpB = poly(b);
if( tmp == 0)
break;
else if( tmpA * tmp < 0.0)
b = x0;
else if( tmpB * tmp < 0.0)
a = x0;
if(tmpB*tmp > 0 && tmpA*tmp >0)
return;
}
vctr.push_back(x0);
}
int main(int argc, char *argv[])
{
double a = -12.0, b= 20;
vector<double> vctr;
while(a <= b)
{
bisection(a, a+0.1, vctr);
a += 0.1;
}
for(int i=0; i<vctr.size(); i++)
cout << vctr[0] << endl;
return 0;
}
在这种情况下一切正常。但是如果在头文件alg.h中定义函数bisection或者将它们取消它们并在alg.cpp中定义它给出了填充零的大小为321((20 + 12)/0.1 + 1)的向量。我完全不知道为什么。有什么帮助吗?