Fab*_*ien 8 c++ std initializer-list c++11
我有一个vector<data>
(data
我自己的宠物类型),我想找到它的最大价值.
std::max
C++ 11中的标准函数似乎适用于对象集合,但它需要初始化列表作为其第一个参数,而不是像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
Run Code Online (Sandbox Code Playgroud)
我怎么解决这个问题?
Chr*_*ica 19
在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)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3025 次 |
最近记录: |