返回可变数量标量的最大值的函数

时间:2014-10-24 06:53:29

标签: c++ visual-studio-2010 max

我需要创建一个函数,它将可变数量的标量作为输入,并返回最大的标量。就像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(), ...);

1 个答案:

答案 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]) ) ;