当使用vector <double>时,我应该在函数定义中放入什么类型?

时间:2017-07-07 13:17:23

标签: c++

我有一个函数,原型如下:

double gradeCalc (double midterm, double final, const vector<double>& hwGrades);

在我的代码中,我传递了变量作业,声明为

vector<double> homework;

进入第三个参数。我收到以下错误:

undefined reference to `gradeCalc(double, double, std::vector<double, std::allocator<double> >)'

在我正在使用的教科书中,函数原型是相同的,但没有提到这个错误。似乎家庭作业的类型不是我想象的那样。我做错了什么? (那个问题的分配器是什么?)

修改 根据要求提供以下全功能定义:

double gradeCalc (double midterm, double final, const vector<double> & hwGrades) {
    if (hwGrades.size() == 0) {
    throw domain_error("homework grades list empty");
    }

    double median = vdMedian(hwGrades);
    return 0.2 * midterm + 0.4 * final + 0.4 * median;
}

编辑#2 找到。愚蠢的印刷错误。仍然有兴趣知道分配器是什么。很高兴在一个单独的问题上提问。

1 个答案:

答案 0 :(得分:0)

vcvarsall.bat模板定义为

vector

请注意第二个模板参数的deafult值。

所以当你写这个

template<class _Ty, class _Alloc = allocator<_Ty> >
class vector: public _Vector_alloc<_Vec_base_types<_Ty, _Alloc> >

它实际上与

相同
std::vector<double> homework;