我有一个vector<data>(其中data是我自己的宠物类型),我想找到它的最大值。

C++ 11中的标准std::max函数似乎可用于对象集合,但它希望将初始化列表作为其第一个参数,而不是像vector这样的集合:

vector<data> vd;
std::max(vd); // Compilation error
std::max({vd[0], vd[1], vd[2]}); // Works, but not ok since I don't vd.size() at compile time

我该如何解决?

最佳答案

std::max 重载仅适用于编译时已知的小集合。您需要的是 std::max_element (甚至是11年前的版本)。这会将迭代器返回到集合的最大元素(或任何迭代器范围):

auto max_iter = std::max_element(vd.begin(), vd.end());
// use *max_iter as maximum value (if vd wasn't empty, of course)

关于c++ - 在c++ 11中,如何在 vector 上调用std::max?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20238691/

10-12 14:55