* Accelerated C++ 絎旇
**/
//璁$畻涓涓獀ector<double>綾誨瀷鐨勫彉閲忕殑涓?br>//鍊煎緱娉ㄦ剰鐨勬槸錛屾帀鍝熻窡鍑芥暟鏃舵暣涓獀ector鍙傛暟閮戒細琚鍒?/span>
double median(vector<double> vec) //涓嶆敼鍙樺悜閲忔湰韜?/span>
{
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];
}
//鏍規嵁鏈熶腑錛屾湡鏈冭瘯鎴愮嘩鍜屼繚瀛樺搴綔涓氱殑鍚戦噺鏉ヨ綆楀鐢熺殑鎬繪垚緇?br>//鐪熶釜鍑芥暟涓嶇敤澶嶅埗瀹冪殑鍙傛暟錛屽洜涓簃edian宸茬粡涓烘垜浠畬鎴愪簡榪欎釜宸ヤ綔
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鏄痟omework鐨勪竴涓浛浠e悕,
//瀵筯w鐨勪換浣曟搷浣滈兘絳変環浜庡homework鐨勬搷浣?br>
const vector<double>& chw = homework; //chw鏄痟omework鐨勪竴涓浛浠e悕錛?br> //const紜繚浜嗘垜浠皢涓嶄細瀵筩hw鐨勪換浣曞彲鑳芥敼鍙樺畠鐨勫肩殑鎿嶄綔
vector<double>& hw1 = hw; //鍚宧w絳変環錛屾槸homework鐨勪竴涓浛浠e悕
const vector<double>& chw1 = chw; //鍚宑hw絳変環錛屼笉鍏佽鍐欒闂甴omework鐨勪竴涓浛浠e悕
**/
//浠庤緭鍏ユ祦涓皢瀹跺涵浣滀笟鐨勬垚緇╄鍏ュ埌涓涓獀ector<double>涓?/span>
istream read_hw(istream& in, vector<double>& hw)
{
if(in){
hw.clear(); //娓呴櫎鍘熷厛鍐呭
double x;
while(in >> x)
hw.push_back(x);
//娓呴櫎嫻佷互浣胯緭鍏ュ姩浣滃浜庝笅涓涓鐢熸湁鏁?/span>
in.clear();
锝?br> return in;
}

]]>