std::min_element 不在列表中 return 最小值

std::min_element on list does not return the minimum

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

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

这是我代码的相关部分:

    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 returns 一个最小值的迭代器而不是最小值本身。 如果您需要实际值,则必须取消引用 min_element.

返回的迭代器

documentation可以看出min_element的签名是:

template< class ForwardIt > 
ForwardIt min_element( ForwardIt first, ForwardIt last );

并且它 returns 一个 ForwardIt 即前向 迭代器