std:: min
|
Definiert in Header
<algorithm>
|
||
|
template
<
class
T
>
const T & min ( const T & a, const T & b ) ; |
(1) | (constexpr seit C++14) |
|
template
<
class
T,
class
Compare
>
const T & min ( const T & a, const T & b, Compare comp ) ; |
(2) | (constexpr seit C++14) |
|
template
<
class
T
>
T min ( std:: initializer_list < T > ilist ) ; |
(3) |
(seit C++11)
(constexpr seit C++14) |
|
template
<
class
T,
class
Compare
>
T min ( std:: initializer_list < T > ilist, Compare comp ) ; |
(4) |
(seit C++11)
(constexpr seit C++14) |
Gibt den kleineren der angegebenen Werte zurück.
Inhaltsverzeichnis |
Parameter
| a, b | - | die zu vergleichenden Werte |
| ilist | - | Initialisierungsliste mit den zu vergleichenden Werten |
| cmp | - |
Vergleichsfunktionsobjekt (d.h. ein Objekt, das die Anforderungen von
Compare
erfüllt), das
true
zurückgibt, wenn
a
kleiner
als
b
ist.
Die Signatur der Vergleichsfunktion sollte folgender entsprechen: bool cmp ( const Type1 & a, const Type2 & b ) ;
Obwohl die Signatur
const
&
nicht benötigt, darf die Funktion die übergebenen Objekte nicht modifizieren und muss alle Werte des Typs (möglicherweise const)
|
Rückgabewert
Komplexität
Mögliche Implementierung
| min (1) |
|---|
template<class T> const T& min(const T& a, const T& b) { return (b < a) ? b : a; } |
| min (2) |
template<class T, class Compare> const T& min(const T& a, const T& b, Compare comp) { return (comp(b, a)) ? b : a; } |
| min (3) |
template<class T> T min(std::initializer_list<T> ilist) { return *std::min_element(ilist.begin(), ilist.end()); } |
| min (4) |
template<class T, class Compare> T min(std::initializer_list<T> ilist, Compare comp) { return *std::min_element(ilist.begin(), ilist.end(), comp); } |
`-Tags wurde gemäß den Anweisungen nicht übersetzt, da er als Code gekennzeichnet ist. Die Funktionsnamen, Schlüsselwörter und Typen (wie `min`, `template`, `class`, `T`, `Compare`, `const`, `std::initializer_list`, etc.) wurden ebenfalls nicht übersetzt, da es sich um C++-spezifische Begriffe handelt.
Hinweise
Das Erfassen des Ergebnisses von
std::min
durch Referenz erzeugt eine hängende Referenz, wenn einer der Parameter ein temporäres Objekt ist und dieser Parameter zurückgegeben wird:
int n = -1; const int& r = std::min(n + 2, n * 2); // r ist hängend
Beispiel
#include <algorithm> #include <iostream> #include <string_view> int main() { std::cout << "smaller of 10 and 010 is " << std::min(10, 010) << '\n' << "smaller of 'd' and 'b' is '" << std::min('d', 'b') << "'\n" << "shortest of \"foo\", \"bar\", and \"hello\" is \"" << std::min({"foo", "bar", "hello"}, [](const std::string_view s1, const std::string_view s2) { return s1.size() < s2.size(); }) << "\"\n"; }
Ausgabe:
smaller of 10 and 010 is 8 smaller of 'd' and 'b' is 'b' shortest of "foo", "bar", and "hello" is "foo"
Fehlerberichte
Die folgenden verhaltensändernden Fehlerberichte wurden rückwirkend auf zuvor veröffentlichte C++-Standards angewendet.
| DR | Angewendet auf | Verhalten wie veröffentlicht | Korrektes Verhalten |
|---|---|---|---|
| LWG 281 | C++98 |
T
musste
CopyConstructible
sein für Überladungen
(
1,2
)
|
nicht erforderlich |
| LWG 2239 |
C++98
C++11 |
1.
T
musste
LessThanComparable
sein für
Überladungen ( 2 ) (C++98) und ( 4 ) (C++11) 2. die Komplexitätsanforderungen fehlten |
1. nicht erforderlich
2. Anforderungen hinzugefügt |
Siehe auch
|
gibt den größeren der gegebenen Werte zurück
(Funktions-Template) |
|
|
(C++11)
|
gibt den kleineren und größeren von zwei Elementen zurück
(Funktions-Template) |
|
gibt das kleinste Element in einem Bereich zurück
(Funktions-Template) |
|
|
(C++17)
|
begrenzt einen Wert zwischen einem Paar von Grenzwerten
(Funktions-Template) |
|
(C++20)
|
gibt den kleineren der gegebenen Werte zurück
(Algorithmus-Funktionsobjekt) |