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

时间:2017-07-20 13:53:21

标签: c++ list minimum

我有一个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;

}

1 个答案:

答案 0 :(得分:8)

问题在于您打印最小

的方式

以下内容有效: 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,即前向迭代器

相关问题