【发布时间】:2014-02-10 02:09:45
【问题描述】:
我看到一些关于这个主题的复杂讨论,但我没有让一段非常简单的代码工作。我找到了两种让它工作的方法,但我对一些语法问题感到困惑。我只想在列表中找到最小值。这有效:
using namespace std;
#include <iostream>
#include <list>
#include <algorithm>
int main(void)
{
auto init_list = {10, 20, 30};
list<int> alist(init_list);
list<int>::iterator minnum = min_element(begin(alist), end(alist));
cout << "The min in the list is: " << *minnum << endl;
return(1);
}
但也有 min() 的定义,它以 initializer_list 作为参数。我想我误解了它的语法。因为我已经定义了一个 init_list 我可以调用
int minint = min(init_list);
这行得通。但我不明白为什么。 min 上的文档说此调用应采用以下形式:
template< class T, class Compare >
T min( std::initializer_list<T> ilist, Compare comp );
所以我不应该指定一个
int minint = min(init_list, operator<);
int minint = min(init_list, int::operator<);
我应该如何通过操作员?显然,在这种情况下这并不重要,但如果我的列表不是整数列表,而是带有重载运算符的一些自定义类型的列表,那么我需要传递一个 operator
【问题讨论】:
-
您在哪里找到此文档?
-
我在link 找到了它。但正如 Tomasz Klak 在下面正确指出的那样,我一定没有仔细阅读,因为我错过了其中一个函数定义。