24 Mayıs 2019 Cuma

std::max_element metodu - ilk max nesneyi döndürür

Giriş
Bir iterator döner. Dizi içinde en büyük elemanı bulur. Açıklaması şöyle. Bu metod ilk max nesneyi döndürür. std::minmax_element() en son max element'i döndürüyor.
 If more than one element fulfills this condition, the iterator returned points to the first of such elements.
Örnek - comparator
Elimizde bir tuple vector olsun. En büyük ikinci elemanı bulmak için şöyle yaparız. Iterator'den tuple'a ve ondan da ikinci elemana erişim koduna dikkat.
std::vector<std::tuple<int, int>> v = { {12,1},{12,5},{5,6} };

const auto less_by_second = [](const auto& lhs, const auto& rhs)
    { return std::get<1>(lhs) < std::get<1>(rhs); };
const double maxVal = std::get<1>(*std::max_element(v.begin(), v.end(), less_by_second));
Örnek - comparator
Elimizde şöyle bir vector<pair> olsun.

0, 1
0, 2
1, 1
1, 2
1, 4
2, 2
3, 1
pair'in sol veya sağındaki en büyük elemanı bulmak isteyelim. Şöyle yaparız.

auto max_pair = *std::max_element(std::begin(edges), std::end(edges), 
    [](const auto& p1, const auto& p2) {
        return std::max(p1.first, p1.second) < std::max(p2.first, p2.second);
    });
int max = std::max(max_pair.first, max_pair.second);

Hiç yorum yok:

Yorum Gönder