我有一个用一些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)
问题在于您打印最小值的方式
以下将有效:
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前向迭代器