我有一个while循环,它使用一些list初始化了double

我想输出最小值,但是到目前为止我所做的一切似乎都没有用,因为我没有任何输出。

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

    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;

}

最佳答案

问题在于您打印最小数量的方式
以下将起作用:cout << *min_element(allDistances.begin(), allDistances.end()) << endl;为什么?
因为min_element将迭代器返回到最小值而不是最小值本身。
如果需要实际值,则必须取消引用min_element返回的迭代器。
您可以从documentation中看到min_element的签名是:

template< class ForwardIt >
ForwardIt min_element( ForwardIt first, ForwardIt last );
并返回ForwardIt,即正向迭代器

09-06 21:53