C ++ Bjarne Stroustrup C ++编程与实践第2版

时间:2014-06-05 21:32:13

标签: c++ sorting

我正在阅读Bjarne Stroustrup新的C ++ PP第二版,在其中他使用排序方法作为排序(someVector)。使用此方法编译代码时,我遇到以下错误。

  

3 IntelliSense:没有重载函数“sort”的实例与参数列表匹配               参数类型是:(Vector)> c:\ Microsoft_Press \ C ++ \ Debug \ Temperature \ Temperature \ Temperature.cpp 19 2温度

     

错误1错误C2780:'void std :: sort(_RanIt,_RanIt,_Pr)':需要3个参数 - 1提供c:\ microsoft_press \ c ++ \ debug \ temperature \ temperature \ temperature.cpp 19 1温度

     

错误2错误C2780:'void std :: sort(_RanIt,_RanIt)':需要2个参数 - 1提供c:\ microsoft_press \ c ++ \ debug \ temperature \ temperature \ temperature.cpp 19 1温度

#include "../std_lib_facilities.h"

int main() 
{ 
    vector<double> temps; 
    for(double temp; cin>>temp;) 
    { 
        temps.push_back(temp); 
    } 
    double sum = 0; 
    for(double x : temps) 
    {   
        sum+= x; 
    } 
    cout<<"Average temperature: "<<sum/temps.size()<<"\n"; 
    sort(temps); 
    cout<<"Median temperature: "<<temps[temps.size()/2]<<"\n";
} 

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

C ++中尚未提供单参数排序。它将由概念启用,但也从C ++ 14推迟。

现在,你必须写:

std::sort(temps.begin(), temps.end());

答案 1 :(得分:1)

sort()期望它应该工作的范围的开始和结束。例如,sort(temps.begin(), temps.end());

temps.begin()temps.end()相应地是定义该范围的开始和结束迭代器。