列表上的std :: min_element不返回最小值

Vik*_*ria 3 c++ list minimum

我有一个用一些s while初始化a 的循环.listdouble

我想输出最小的值,但到目前为止我所做的似乎不起作用,因为我没有得到任何输出.

这是我的代码的相关部分:

    list<double> allDistances;

    std::ifstream infile("ATXTFile.txt");
    while (std::getline(infile, data)) {

        //do some stuff
        //dist are some double values
        allDistances.push_back(dist);
    }

    cout << min_element(allDistances.begin(), allDistances.end()) << endl;

}
Run Code Online (Sandbox Code Playgroud)

Dav*_*aro 8

问题在于您打印最小值的方式

以下将有效: cout << *min_element(allDistances.begin(), allDistances.end()) << endl;

为什么?

因为min_element将迭代器返回到最小值而不是最小值本身.如果需要实际值,则必须取消引用返回的迭代器min_element.

您可以从文档中看到签名min_element:

template< class ForwardIt > 
ForwardIt min_element( ForwardIt first, ForwardIt last );
Run Code Online (Sandbox Code Playgroud)

并且它返回一个ForwardItie前向迭代器