Wenn Sie den kleinsten und größten Wert suchen und bisher std::min()
und std::max()
verwendet haben, bietet Ihnen Boost.MinMax einen Algorithmus an, der den kleinsten und größten Wert mit einem einzigen Funktionsaufruf findet. Der von Boost.MinMax angebotene Algorithmus ist effizienter als wenn Sie std::min()
und std::max()
aufrufen.
Boost.MinMax ist in C++11 eingegangen. Sie finden die Algorithmen aus dieser Boost-Bibliothek in der Headerdatei algorithm
, wenn Ihre Entwicklungsumgebung C++11 unterstützt.
boost::minmax()
in Aktion#include <boost/algorithm/minmax.hpp>
#include <boost/tuple/tuple.hpp>
#include <iostream>
int main()
{
int i = 2;
int j = 1;
boost::tuples::tuple<const int&, const int&> t = boost::minmax(i, j);
std::cout << t.get<0>() << '\n';
std::cout << t.get<1>() << '\n';
}
Sie verwenden boost::minmax()
, wenn Sie den kleinsten und den größten zweier Werte finden möchten. Während std::min()
und std::max()
nur einen Wert zurückgeben, gibt boost::minmax()
entsprechend zwei Werte zurück. Dies geschieht über ein Tuple vom Typ boost::tuple
. Die erste im Tuple gespeicherte Referenz verweist auf den kleineren, die zweite Referenz auf den größeren Wert. Beispiel 59.1 gibt entsprechend 1
und 2
in dieser Reihenfolge aus.
boost::minmax()
ist in der Headerdatei boost/algorithm/minmax.hpp
definiert.
boost::minmax_element()
in Aktion#include <boost/algorithm/minmax_element.hpp>
#include <array>
#include <utility>
#include <iostream>
int main()
{
typedef std::array<int, 4> array;
array a{{2, 3, 0, 1}};
std::pair<array::iterator, array::iterator> p =
boost::minmax_element(a.begin(), a.end());
std::cout << *p.first << '\n';
std::cout << *p.second << '\n';
}
So wie die Standardbibliothek Algorithmen zur Verfügung stellt, um das kleinste und größte Element in einem Container zu finden, bietet Boost.MinMax boost::minmax_element()
an, um das kleinste und größte Element in einem Container mit einem einzigen Funktionsaufruf zu finden.
Beachten Sie, dass boost::minmax_element()
als Ergebnis ein std::pair
mit zwei Iteratoren zurückgibt. Der Rückgabewert unterscheidet sich demnach von boost::minmax()
. Der erste Iterator zeigt auf das kleinste und der zweite Iterator auf das größte Element im Container. Beispiel 59.2 gibt demnach 0
und 3
in dieser Reihenfolge aus.
boost::minmax_element()
ist in der Headerdatei boost/algorithm/minmax_element.hpp
definiert.
Die Algorithmen boost::minmax()
und boost::minmax_element()
können auch mit einem dritten Parameter aufgerufen werden, der angibt, wie Werte verglichen werden sollen. boost::minmax()
und boost::minmax_element()
können demnach genauso verwendet werden wie die Algorithmen aus der Standardbibliothek.