我需要创建一个函数,它将可变数量的标量作为输入,并返回最大的标量。就像std :: max()为2个元素做的那样,但我需要它来定义一个未定义的元素,可以是2,或5,或10等。有关如何处理这个的任何建议吗?
我正在使用Visual Studio 2010.我尝试过:
std::max({2, 8, 5, 3})
错误:没有重载函数“std :: max”的实例与参数列表匹配
std::vector<int> v {2, 8, 5, 3};
错误:预期a; (在v之后)
更重要的是,如果我把它放到一个函数中,我如何拥有可变数量的参数以及如何调用它们?我想应该以某种方式使用模板?
我需要它:我正在使用一堆矢量,地图等,我需要找出哪个元素最多。所以我认为我最终会得到像
int biggest = max(vector1.size(), vector2.size(), map1.size(), ...);
答案 0 :(得分:3)
如果您已填充容器
,请使用std::max_element
std::vector<int>::iterator it = std::max_element( vector1.begin(), vector1.end() );
否则使用如下的普通数组:
int a[] = {2, 8, 5, 3 }; // add whatever elements you want
int *pos = std::max_element( a, a+sizeof(a)/sizeof(a[0]) ) ;