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
即前向 迭代器
我有一个 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
即前向 迭代器