posts - 18,  comments - 2,  trackbacks - 0
/**
 * Accelerated C++ 笔记
**/
//计算一个vector<double>类型的变量的中值
//值得注意的是,掉哟跟函数时整个vector参数都会被复制
double median(vector<double> vec)  //不改变向量本身
{
    typedef vector
<double>::size_type vec_sz;

    vec_sz size 
= vec.size();
    
if(size == 0)
        
throw domain_error("median of an empty vector");
    sort(vec.begin(), vec.end());
    
    vec_sz mid 
= size/2;
    
return size % 2 == 0 ? (vec[mid]+vec[mid-1]) / 2 : vec[mid];
}

//根据期中,期末考试成绩和保存家庭作业的向量来计算学生的总成绩
//真个函数不用复制它的参数,因为median已经为我们完成了这个工作
double grade(double midterm, double final, const vector<double>& hw)
{
    
if(hw.size() == 0)
        
throw domain_error("student has done no homework");
    
return grade(midterm, final, median(hw));
}
//函数重载
double grade(double midterm, double final, double homework)
{
    
return 0.2 * midterm + 0.4 * final + 0.4 * homework;
}

/**
    const vector<double>&这种类型被成为"对参数类型为double的向量常量的引用"
    vector<double> homework;
    vector<double>& hw = homework; //hw是homework的一个替代名,
    //对hw的任何操作都等价于对homework的操作

    const vector<double>& chw = homework; //chw是homework的一个替代名,
    //const确保了我们将不会对chw的任何可能改变它的值的操作

    vector<double>& hw1 = hw; //同hw等价,是homework的一个替代名
    const vector<double>& chw1 = chw; //同chw等价,不允许写访问homework的一个替代名
*
*/


//从输入流中将家庭作业的成绩读入到一个vector<double>中
istream read_hw(istream& in, vector<double>& hw)
{
    
if(in){
        hw.clear(); 
//清除原先内容
        double x;
        
while(in >> x)
            hw.push_back(x);
        
//清除流以使输入动作对于下一个学生有效
        in.clear();
    }
    
return in;
}


posted on 2008-10-04 15:07 xuejzt 阅读(415) 评论(0)  编辑 收藏 引用 所属分类: C++

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理



<2008年10月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

常用链接

留言簿(1)

随笔分类

随笔档案

搜索

  •  

最新评论

阅读排行榜

评论排行榜