考虑具有成员x和std :: vector <A>的A类.现在,在向量内的所有元素中搜索最大x是一项常见任务.显然,如果x上有迭代器,我只能使用std :: max_element.但我必须自己写一个,或者我只是做一个简单的for循环.
maxSoFar = -std::numeric_limits< double >::max();
for( std::vector< A >::const_iterator cit = as.begin(); cit != as.end(); ++cit )
{
if( cit->x > maxSoFar )
maxSoFar = cit->x;
}
Run Code Online (Sandbox Code Playgroud)
但它太乏味了,我太懒了..有更好的选择吗?
(这是一个相关的问题,但与我的案例有所不同,这使我怀疑我对它的理解).
我有这门课:
class MyOwnClass
{
public:
int score; Specialcustomtype val1; double index;
private:
};
Run Code Online (Sandbox Code Playgroud)
和MyOwnClass的向量
vector<MyOwnClass> MySuperVector(20);
Run Code Online (Sandbox Code Playgroud)
有一些代码将值设置为MyOwnClass的字段,我想找到向量中的哪个MyOwnClass具有最高值的字段分数.
在相关问题的答案中:
#include <algorithm> // For std::minmax_element
#include <tuple> // For std::tie
#include <vector> // For std::vector
#include <iterator> // For global begin() and end()
struct Size {
int width, height;
};
std::vector<Size> sizes = { {4, 1}, {2, 3}, {1, 2} };
decltype(sizes)::iterator minEl, maxEl;
std::tie(minEl, maxEl) = std::minmax_element(begin(sizes), end(sizes),
[] (Size const& s1, Size const& …Run Code Online (Sandbox Code Playgroud)