std::map<Key,T,Compare,Allocator>:: equal_range
|
std::
pair
<
iterator, iterator
>
equal_range
(
const
Key
&
key
)
;
|
(1) | (constexpr seit C++26) |
|
std::
pair
<
const_iterator, const_iterator
>
equal_range ( const Key & key ) const ; |
(2) | (constexpr seit C++26) |
|
template
<
class
K
>
std:: pair < iterator, iterator > equal_range ( const K & x ) ; |
(3) |
(seit C++14)
(constexpr seit C++26) |
|
template
<
class
K
>
std::
pair
<
const_iterator, const_iterator
>
|
(4) |
(seit C++14)
(constexpr seit C++26) |
Gibt einen Bereich zurück, der alle Elemente mit dem angegebenen Schlüssel im Container enthält. Der Bereich wird durch zwei Iteratoren definiert, wobei einer auf das erste Element zeigt, das nicht kleiner als der angegebene Schlüssel ist, und ein anderer auf das erste Element, das größer als der angegebene Schlüssel ist.
Alternativ kann der erste Iterator mit lower_bound() erhalten werden und der zweite mit upper_bound() .
Compare
transparent
ist. Sie ermöglicht den Aufruf dieser Funktion ohne Konstruktion einer Instanz von
Key
.
Inhaltsverzeichnis |
Parameter
| key | - | Schlüsselwert, mit dem die Elemente verglichen werden |
| x | - |
alternativer Wert, der mit
Key
verglichen werden kann
|
Rückgabewert
std::pair enthält ein Paar von Iteratoren, die den gewünschten Bereich definieren:
- Der erste Iterator zeigt auf das erste Element, das nicht kleiner als der gegebene Schlüssel ist, oder auf end ( ) falls kein solches Element existiert.
- Der zweite Iterator zeigt auf das erste Element, das größer als der gegebene Schlüssel ist, oder auf end ( ) falls kein solches Element existiert.
Komplexität
Logarithmisch in der Größe des Containers.
Hinweise
| Feature-Test Makro | Wert | Std | Funktion |
|---|---|---|---|
__cpp_lib_generic_associative_lookup
|
201304L
|
(C++14) | Heterogener Vergleichslookup in assoziativen Containern , für Überladungen ( 3,4 ) |
Beispiel
#include <iostream> #include <map> int main() { const std::map<int, const char*> m { {0, "zero"}, {1, "one"}, {2, "two"} }; auto p = m.equal_range(1); for (auto& q = p.first; q != p.second; ++q) std::cout << "m[" << q->first << "] = " << q->second << '\n'; if (p.second == m.find(2)) std::cout << "end of equal_range (p.second) is one-past p.first\n"; else std::cout << "unexpected; p.second expected to be one-past p.first\n"; auto pp = m.equal_range(-1); if (pp.first == m.begin()) std::cout << "pp.first is iterator to first not-less than -1\n"; else std::cout << "unexpected pp.first\n"; if (pp.second == m.begin()) std::cout << "pp.second is iterator to first element greater-than -1\n"; else std::cout << "unexpected pp.second\n"; auto ppp = m.equal_range(3); if (ppp.first == m.end()) std::cout << "ppp.first is iterator to first not-less than 3\n"; else std::cout << "unexpected ppp.first\n"; if (ppp.second == m.end()) std::cout << "ppp.second is iterator to first element greater-than 3\n"; else std::cout << "unexpected ppp.second\n"; }
Ausgabe:
m[1] = one end of equal_range (p.second) is one-past p.first pp.first is iterator to first not-less than -1 pp.second is iterator to first element greater-than -1 ppp.first is iterator to first not-less than 3 ppp.second is iterator to first element greater-than 3
Siehe auch
|
findet Element mit spezifischem Schlüssel
(öffentliche Elementfunktion) |
|
|
(C++20)
|
prüft ob der Container ein Element mit spezifischem Schlüssel enthält
(öffentliche Elementfunktion) |
|
gibt die Anzahl der Elemente zurück, die mit einem spezifischen Schlüssel übereinstimmen
(öffentliche Elementfunktion) |
|
|
gibt einen Iterator zum ersten Element zurück, das
größer
als der gegebene Schlüssel ist
(öffentliche Elementfunktion) |
|
|
gibt einen Iterator zum ersten Element zurück, das
nicht kleiner
als der gegebene Schlüssel ist
(öffentliche Elementfunktion) |
|
|
gibt den Bereich der Elemente zurück, die mit einem spezifischen Schlüssel übereinstimmen
(Funktionstemplate) |