std::multiset<Key,Compare,Allocator>::equal_range
| std::pair<iterator, iterator> equal_range( const Key& key ); |
(1) | |
| std::pair<const_iterator, const_iterator> equal_range( const Key& key ) const; |
(2) | |
template< class K > std::pair<iterator, iterator> equal_range( const K& x ); |
(3) | (seit C++14) |
| template< class K > std::pair<const_iterator, const_iterator> equal_range( const K& x ) const; |
(4) | (seit C++14) |
Gibt einen Bereich zurück, der alle Elemente mit dem gegebenen Schlüssel im Container enthält. Der Bereich wird durch zwei Iteratoren definiert: einen, der auf das erste Element zeigt, das nicht kleiner als key ist, und einen anderen, der auf das erste Element zeigt, das größer als key ist. Alternativ kann der erste Iterator mit lower_bound() und der zweite mit upper_bound() erhalten werden.
Key zu konstruieren.Inhalt |
[bearbeiten] Parameter
| key | - | key Wert, mit dem die Elemente verglichen werden |
| x | - | alternativer Wert, der mit Key verglichen werden kann |
[bearbeiten] Rückgabewert
std::pair, das ein Paar von Iteratoren enthält, die den gewünschten Bereich definieren: Der erste zeigt auf das erste Element, das nicht kleiner als key ist, und der zweite zeigt auf das erste Element, das größer als key ist.
Wenn keine Elemente vorhanden sind, die nicht kleiner als key sind, wird der Past-the-end (siehe end()) Iterator als erstes Element zurückgegeben. Ebenso wird, wenn keine Elemente vorhanden sind, die größer als key sind, der Past-the-end Iterator als zweites Element zurückgegeben.
|
Da |
(seit C++11) |
[bearbeiten] Komplexität
Logarithmisch zur Größe des Containers.
Anmerkungen
| Feature-Test-Makro | Wert | Std | Feature |
|---|---|---|---|
__cpp_lib_generic_associative_lookup |
201304L |
(C++14) | Heterogene Vergleichssuche in assoziativen Containern, für Überladungen (3,4) |
[bearbeiten] Beispiel
#include <iostream> #include <set> template<typename I> void print_equal_range(I first, I lb, I ub, I last) { for (I i{first}; i != lb; ++i) std::cout << *i << ' '; std::cout << "[ "; for (I i{lb}; i != ub; ++i) std::cout << *i << ' '; std::cout << ") "; for (I i{ub}; i != last; ++i) std::cout << *i << ' '; std::cout << '\n'; } int main() { std::multiset<int> c{4, 3, 2, 1, 3, 3}; std::cout << "c = "; print_equal_range(begin(c), begin(c), end(c), end(c)); for (int key{}; key != 6; ++key) { std::cout << "key = " << key << "; equal range = "; const auto [lb, ub] = c.equal_range(key); print_equal_range(begin(c), lb, ub, end(c)); } }
Ausgabe
c = [ 1 2 3 3 3 4 ) key = 0; equal range = [ ) 1 2 3 3 3 4 key = 1; equal range = [ 1 ) 2 3 3 3 4 key = 2; equal range = 1 [ 2 ) 3 3 3 4 key = 3; equal range = 1 2 [ 3 3 3 ) 4 key = 4; equal range = 1 2 3 3 3 [ 4 ) key = 5; equal range = 1 2 3 3 3 4 [ )
[bearbeiten] Siehe auch
| sucht ein Element mit einem bestimmten Schlüssel (public member function) | |
| (C++20) |
prüft, ob der Container ein Element mit einem bestimmten Schlüssel enthält (public member function) |
| gibt die Anzahl der Elemente zurück, die einem bestimmten Schlüssel entsprechen (public member function) | |
| gibt einen Iterator zum ersten Element zurück, das *größer* als der gegebene Schlüssel ist (public member function) | |
| gibt einen Iterator zum ersten Element zurück, das *nicht kleiner* als der gegebene Schlüssel ist (public member function) | |
| gibt den Bereich von Elementen zurück, die einem bestimmten Schlüssel entsprechen (Funktionstemplate) |