我有一个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/