multimap
(STL/CLR)
Klasa szablonu opisuje obiekt, który kontroluje różną długość sekwencji elementów, które mają dwukierunkowy dostęp. Kontener multimap
służy do zarządzania sekwencją elementów jako (prawie) uporządkowanym drzewem węzłów, z których każdy przechowuje jeden element. Element składa się z klucza, do porządkowania sekwencji i zamapowanej wartości, która przechodzi przez przejażdżkę.
W poniższym GValue
opisie jest taki sam jak:
Microsoft::VisualC::StlClr::GenericPair<GKey, GMapped>
gdzie:
GKey
jest taki sam jak Key
, chyba że ten ostatni jest typem ref, w takim przypadku jest to Key^
GMapped
jest taki sam jak Mapped
, chyba że ten ostatni jest typem ref, w takim przypadku jest to Mapped^
Składnia
template<typename Key,
typename Mapped>
ref class multimap
: public
System::ICloneable,
System::Collections::IEnumerable,
System::Collections::ICollection,
System::Collections::Generic::IEnumerable<GValue>,
System::Collections::Generic::ICollection<GValue>,
System::Collections::Generic::IList<GValue>,
Microsoft::VisualC::StlClr::ITree<Gkey, GValue>
{ ..... };
Parametry
Key
Typ kluczowego składnika elementu w kontrolowanej sekwencji.
Mapped
Typ innego składnika elementu w kontrolowanej sekwencji.
Wymagania
Nagłówka:< cliext/map>
Obszaru nazw:cliext
Deklaracje
Definicja typu | Opis |
---|---|
multimap::const_iterator |
Typ iteratora stałego dla kontrolowanej sekwencji. |
multimap::const_reference |
Typ stałego odwołania do elementu. |
multimap::const_reverse_iterator |
Typ stałego iteratora odwrotnego dla kontrolowanej sekwencji. |
multimap::difference_type |
Typ (prawdopodobnie podpisanej) odległości między dwoma elementami. |
multimap::generic_container |
Typ interfejsu ogólnego dla kontenera. |
multimap::generic_iterator |
Typ iteratora dla interfejsu ogólnego kontenera. |
multimap::generic_reverse_iterator |
Typ iteratora odwrotnego dla interfejsu ogólnego kontenera. |
multimap::generic_value |
Typ elementu dla interfejsu ogólnego kontenera. |
multimap::iterator |
Typ iteratora dla kontrolowanej sekwencji. |
multimap::key_compare |
Delegat porządkowania dla dwóch kluczy. |
multimap::key_type |
Typ klucza sortowania. |
multimap::mapped_type |
Typ zamapowanej wartości skojarzonej z każdym kluczem. |
multimap::reference |
Typ odwołania do elementu. |
multimap::reverse_iterator |
Typ iteratora odwrotnego dla kontrolowanej sekwencji. |
multimap::size_type |
Typ odległości (nie ujemnej) między dwoma elementami. |
multimap::value_compare |
Delegat porządkowania dla dwóch wartości elementów. |
multimap::value_type |
Typ elementu. |
Funkcja składowa | Opis |
---|---|
multimap::begin |
Określa początek kontrolowanej sekwencji. |
multimap::clear |
Usuwa wszystkie elementy. |
multimap::count |
Zlicza elementy pasujące do określonego klucza. |
multimap::empty |
Sprawdza, czy nie ma żadnych elementów. |
multimap::end |
Określa koniec kontrolowanej sekwencji. |
multimap::equal_range |
Wyszukuje zakres, który odpowiada określonemu kluczowi. |
multimap::erase |
Usuwa elementy z określonych pozycji. |
multimap::find |
Wyszukuje element, który odpowiada określonemu kluczowi. |
multimap::insert |
Dodaje elementy. |
multimap::key_comp |
Kopiuje delegata porządkowania dla dwóch kluczy. |
multimap::lower_bound |
Znajduje początek zakresu, który pasuje do określonego klucza. |
multimap::make_value |
Tworzy obiekt wartości. |
multimap::multimap |
Konstruuje obiekt kontenera. |
multimap::rbegin |
Wyznacza początek odwróconej kontrolowanej sekwencji. |
multimap::rend |
Wyznacza koniec odwróconej kontrolowanej sekwencji. |
multimap::size |
Liczy liczbę elementów. |
multimap::swap |
Zamienia zawartości dwóch kontenerów. |
multimap::to_array |
Kopiuje kontrolowaną sekwencję do nowej tablicy. |
multimap::upper_bound |
Znajduje koniec zakresu, który pasuje do określonego klucza. |
multimap::value_comp |
Kopiuje delegata porządkowania dla dwóch wartości elementów. |
Operator | Opis |
---|---|
multimap::operator= |
Zastępuje kontrolowaną sekwencję. |
operator!= (mapa wielomapowa) |
Określa, czy multimap obiekt nie jest równy innemu multimap obiektowi. |
operator< (mapa wielomapowa) |
Określa, czy multimap obiekt jest mniejszy niż inny multimap obiekt. |
operator<= (mapa wielomapowa) |
Określa, czy multimap obiekt jest mniejszy lub równy innemu multimap obiektowi. |
operator== (mapa wielomapowa) |
Określa, czy multimap obiekt jest równy innemu multimap obiektowi. |
operator> (mapa wielomapowa) |
Określa, czy multimap obiekt jest większy niż inny multimap obiekt. |
operator>= (mapa wielomapowa) |
Określa, czy multimap obiekt jest większy lub równy innemu multimap obiektowi. |
Interfejsy
Interfejs | Opis |
---|---|
ICloneable | Duplikowanie obiektu. |
IEnumerable | Sekwencja przez elementy. |
ICollection | Zachowaj grupę elementów. |
IEnumerable<T> | Sekwencja przez wpisane elementy. |
ICollection<T> | Zachowaj grupę typowanych elementów. |
ITree<Key, Value> |
Obsługa ogólnego kontenera. |
Uwagi
Obiekt przydziela i zwalnia magazyn dla sekwencji, która kontroluje jako poszczególne węzły. Wstawia elementy do (prawie) zrównoważonego drzewa, które jest uporządkowane przez zmianę łączy między węzłami, nigdy przez skopiowanie zawartości jednego węzła do innego. Oznacza to, że można swobodnie wstawiać i usuwać elementy bez zakłócania pozostałych elementów.
Obiekt porządkuje sekwencję, którą kontroluje, wywołując przechowywany obiekt delegata typu multimap::key_compare
. Podczas konstruowania wielomapy można określić przechowywany obiekt delegata; Jeśli nie określisz obiektu delegata, wartością domyślną jest porównanie operator<(key_type, key_type)
. Dostęp do tego przechowywanego obiektu można uzyskać, wywołując funkcję multimap::key_comp
składową .
Taki obiekt delegata musi nakładać ścisłe słabe kolejność na klucze typu multimap::key_type
. Oznacza to, że dla dowolnych dwóch kluczy X
i Y
:
key_comp()(X, Y)
zwraca ten sam wynik logiczny dla każdego wywołania.
Jeśli key_comp()(X, Y)
ma wartość true, musi key_comp()(Y, X)
to być fałsz.
Jeśli key_comp()(X, Y)
jest prawdą, mówi X
się, że należy zamówić przed Y
.
Jeśli !key_comp()(X, Y) && !key_comp()(Y, X)
jest prawdą, mówi Y
X
się, że mają równoważną kolejność.
Dla każdego elementu X
, który poprzedza Y
się w kontrolowanej sekwencji, key_comp()(Y, X)
jest false. (W przypadku domyślnego obiektu delegata klucze nigdy nie zmniejszają wartości). W przeciwieństwie do mapy klas szablonów (STL/CLR) obiekt klasy multimap
szablonu nie wymaga, aby klucze dla wszystkich elementów są unikatowe. (Co najmniej dwa klucze mogą mieć równoważną kolejność).
Każdy element zawiera oddzielny klucz i zamapowany wartość. Sekwencja jest reprezentowana w sposób, który umożliwia wyszukiwanie, wstawianie i usuwanie dowolnego elementu w czasie logarytmiczną. Oznacza to, że liczba operacji jest proporcjonalna do logarytmu liczby elementów w sekwencji. Ponadto wstawienie elementu unieważnia nie iteratory i usunięcie elementu unieważnia tylko te iteratory, które wskazują na usunięty element.
Element multimap
obsługuje iteratory dwukierunkowe, co oznacza, że można przejść do sąsiednich elementów, biorąc pod uwagę iterator, który wyznacza element w kontrolowanej sekwencji. Specjalny węzeł główny odpowiada iteratorowi zwróconego przez end()
element . Można dekrementować ten iterator, aby osiągnąć ostatni element w kontrolowanej sekwencji, jeśli istnieje. Można zwiększać multimap
iterator, aby uzyskać dostęp do węzła głównego, a następnie porównać wartość równą end()
. Nie można jednak wyłusić iteratora zwróconego przez end()
.
Nie można odwoływać się do multimap
elementu bezpośrednio nadanego jego pozycji liczbowej. Wymaga to iteratora dostępu losowego.
multimap
Iterator przechowuje dojście do skojarzonego multimap
węzła, który z kolei przechowuje dojście do skojarzonego kontenera. Iteratory można używać tylko ze skojarzonymi obiektami kontenera. multimap
Iterator pozostaje ważny tak długo, jak skojarzony multimap
z nim węzeł jest skojarzony z niektórymi mapami wielomapowymi. Ponadto prawidłowy iterator jest wyłuskiwalny. Można go użyć, aby uzyskać dostęp do wartości lub zmienić jej wartość, tak długo, jak nie jest równa end()
.
Wymazywanie lub usuwanie elementu wywołuje destruktor dla jego przechowywanej wartości. Zniszczenie kontenera spowoduje wymazywanie wszystkich elementów. W związku z tym kontener, którego typ elementu jest klasą ref, gwarantuje, że żadne elementy nie przeżyją kontenera. Jednak kontener uchwytów nie niszczy swoich elementów.
Elementy członkowskie
multimap::begin
Określa początek kontrolowanej sekwencji.
Składnia
iterator begin();
Uwagi
Funkcja składowa zwraca iterator dwukierunkowy, który wyznacza pierwszy element kontrolowanej sekwencji lub tuż poza końcem pustej sekwencji. Służy do uzyskania iteratora, który wyznacza current
początek kontrolowanej sekwencji, ale jego stan może ulec zmianie, jeśli długość kontrolowanej sekwencji ulegnie zmianie.
Przykład
// cliext_multimap_begin.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// inspect first two items
Mymultimap::iterator it = c1.begin();
System::Console::WriteLine("*begin() = [{0} {1}]",
it->first, it->second);
++it;
System::Console::WriteLine("*++begin() = [{0} {1}]",
it->first, it->second);
return (0);
}
[a 1] [b 2] [c 3]
*begin() = [a 1]
*++begin() = [b 2]
multimap::clear
Usuwa wszystkie elementy.
Składnia
void clear();
Uwagi
Funkcja składowa skutecznie wywołuje funkcję erase(begin(), end())
. Służy do zapewnienia, że kontrolowana sekwencja jest pusta.
Przykład
// cliext_multimap_clear.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// clear the container and reinspect
c1.clear();
System::Console::WriteLine("size() = {0}", c1.size());
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
// display contents " [a 1] [b 2]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
c1.clear();
System::Console::WriteLine("size() = {0}", c1.size());
return (0);
}
[a 1] [b 2] [c 3]
size() = 0
[a 1] [b 2]
size() = 0
multimap::const_iterator
Typ iteratora stałego dla kontrolowanej sekwencji.
Składnia
typedef T2 const_iterator;
Uwagi
Typ opisuje obiekt nieokreślonego typu T2
, który może służyć jako stały iterator dwukierunkowy dla kontrolowanej sekwencji.
Przykład
// cliext_multimap_const_iterator.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
Mymultimap::const_iterator cit = c1.begin();
for (; cit != c1.end(); ++cit)
System::Console::Write("[{0} {1}] ", cit->first, cit->second);
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
multimap::const_reference
Typ stałego odwołania do elementu.
Składnia
typedef value_type% const_reference;
Uwagi
Typ opisuje stałe odwołanie do elementu.
Przykład
// cliext_multimap_const_reference.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
Mymultimap::const_iterator cit = c1.begin();
for (; cit != c1.end(); ++cit)
{ // get a const reference to an element
Mymultimap::const_reference cref = *cit;
System::Console::Write("[{0} {1}] ", cref->first, cref->second);
}
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
multimap::const_reverse_iterator
Typ iteratora wstecznego stałej dla kontrolowanej sekwencji.
Składnia
typedef T4 const_reverse_iterator;
Uwagi
Typ opisuje obiekt nieokreślonego typu T4
, który może służyć jako stały iterator odwrotny dla kontrolowanej sekwencji.
Przykład
// cliext_multimap_const_reverse_iterator.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]" reversed
Mymultimap::const_reverse_iterator crit = c1.rbegin();
for (; crit != c1.rend(); ++crit)
System::Console::Write("[{0} {1}] ", crit->first, crit->second);
System::Console::WriteLine();
return (0);
}
[c 3] [b 2] [a 1]
multimap::count
Wyszukuje liczbę elementów pasujących do określonego klucza.
Składnia
size_type count(key_type key);
Parametry
key
Wartość klucza do wyszukania.
Uwagi
Funkcja składowa zwraca liczbę elementów w kontrolowanej sekwencji, które mają równoważną kolejność z key
. Służy do określania liczby elementów aktualnie w kontrolowanej sekwencji, która jest zgodna z określonym kluczem.
Przykład
// cliext_multimap_count.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
System::Console::WriteLine("count(L'A') = {0}", c1.count(L'A'));
System::Console::WriteLine("count(L'b') = {0}", c1.count(L'b'));
System::Console::WriteLine("count(L'C') = {0}", c1.count(L'C'));
return (0);
}
[a 1] [b 2] [c 3]
count(L'A') = 0
count(L'b') = 1
count(L'C') = 0
multimap::difference_type
Typy odległości ze znakiem między dwoma elementami.
Składnia
typedef int difference_type;
Uwagi
Typ opisuje prawdopodobnie ujemną liczbę elementów.
Przykład
// cliext_multimap_difference_type.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// compute positive difference
Mymultimap::difference_type diff = 0;
for (Mymultimap::iterator it = c1.begin(); it != c1.end(); ++it)
++diff;
System::Console::WriteLine("end()-begin() = {0}", diff);
// compute negative difference
diff = 0;
for (Mymultimap::iterator it = c1.end(); it != c1.begin(); --it)
--diff;
System::Console::WriteLine("begin()-end() = {0}", diff);
return (0);
}
[a 1] [b 2] [c 3]
end()-begin() = 3
begin()-end() = -3
multimap::empty
Sprawdza, czy nie ma żadnych elementów.
Składnia
bool empty();
Uwagi
Funkcja składowa zwraca wartość true dla pustej kontrolowanej sekwencji. Jest to odpowiednik size() == 0
. Służy do testowania, czy element multimap
jest pusty.
Przykład
// cliext_multimap_empty.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
System::Console::WriteLine("size() = {0}", c1.size());
System::Console::WriteLine("empty() = {0}", c1.empty());
// clear the container and reinspect
c1.clear();
System::Console::WriteLine("size() = {0}", c1.size());
System::Console::WriteLine("empty() = {0}", c1.empty());
return (0);
}
[a 1] [b 2] [c 3]
size() = 3
empty() = False
size() = 0
empty() = True
multimap::end
Określa koniec kontrolowanej sekwencji.
Składnia
iterator end();
Uwagi
Funkcja składowa zwraca iterator dwukierunkowy, który wskazuje tuż za końcem kontrolowanej sekwencji. Służy do uzyskania iteratora, który wyznacza koniec kontrolowanej sekwencji; jego stan nie zmienia się, jeśli długość kontrolowanej sekwencji ulegnie zmianie.
Przykład
// cliext_multimap_end.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// inspect last two items
Mymultimap::iterator it = c1.end();
--it;
--it;
System::Console::WriteLine("*-- --end() = [{0} {1}]",
it->first, it->second);
++it;
System::Console::WriteLine("*--end() = [{0} {1}]",
it->first, it->second);
return (0);
}
[a 1] [b 2] [c 3]
*-- --end() = [b 2]
*--end() = [c 3]
multimap::equal_range
Wyszukuje zakres, który odpowiada określonemu kluczowi.
Składnia
pair_iter_iter equal_range(key_type key);
Parametry
key
Wartość klucza do wyszukania.
Uwagi
Metoda zwraca parę iteratorów, pair_iter_iter(lower_bound(key), upper_bound(key))
. Służy do określania zakresu elementów aktualnie w kontrolowanej sekwencji, która jest zgodna z określonym kluczem.
Przykład
// cliext_multimap_equal_range.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
typedef Mymultimap::pair_iter_iter Pairii;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// display results of failed search
Pairii pair1 = c1.equal_range(L'x');
System::Console::WriteLine("equal_range(L'x') empty = {0}",
pair1.first == pair1.second);
// display results of successful search
pair1 = c1.equal_range(L'b');
for (; pair1.first != pair1.second; ++pair1.first)
System::Console::Write("[{0} {1}] ",
pair1.first->first, pair1.first->second);
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
equal_range(L'x') empty = True
[b 2]
multimap::erase
Usuwa elementy z określonych pozycji.
Składnia
iterator erase(iterator where);
iterator erase(iterator first, iterator last);
bool erase(key_type key)
Parametry
first
Początek zakresu do wymazywania.
key
Wartość klucza do wymazywania.
last
Koniec zakresu do wymazywania.
where
Element do wymazywania.
Uwagi
Pierwsza funkcja składowa usuwa element kontrolowanej sekwencji wskazywanej przez where
, i zwraca iterator, który wyznacza pierwszy element pozostały poza usuniętym elementem lub end()
jeśli taki element nie istnieje. Służy do usuwania pojedynczego elementu.
Druga funkcja składowa usuwa elementy kontrolowanej sekwencji w zakresie [first
, last
), i zwraca iterator, który wyznacza pierwszy element pozostały poza usuniętymi elementami lub end()
jeśli taki element nie istnieje. Służy do usuwania zera lub większej liczby ciągłych elementów.
Trzecia funkcja składowa usuwa dowolny element kontrolowanej sekwencji, którego klucz ma równoważną kolejność do key
, i zwraca liczbę usuniętych elementów. Służy do usuwania i zliczanie wszystkich elementów, które pasują do określonego klucza.
Wymazywanie każdego elementu wymaga czasu proporcjonalnego do logarytmu liczby elementów w kontrolowanej sekwencji.
Przykład
// cliext_multimap_erase.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
cliext::multimap<wchar_t, int> c1;
c1.insert(cliext::multimap<wchar_t, int>::make_value(L'a', 1));
c1.insert(cliext::multimap<wchar_t, int>::make_value(L'b', 2));
c1.insert(cliext::multimap<wchar_t, int>::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (cliext::multimap<wchar_t, int>::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// erase an element and reinspect
cliext::multimap<wchar_t, int>::iterator it =
c1.erase(c1.begin());
System::Console::WriteLine("erase(begin()) = [{0} {1}]",
it->first, it->second);
// add elements and display " b c d e"
c1.insert(cliext::multimap<wchar_t, int>::make_value(L'd', 4));
c1.insert(cliext::multimap<wchar_t, int>::make_value(L'e', 5));
for each (cliext::multimap<wchar_t, int>::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// erase all but end
it = c1.end();
it = c1.erase(c1.begin(), --it);
System::Console::WriteLine("erase(begin(), end()-1) = [{0} {1}]",
it->first, it->second);
System::Console::WriteLine("size() = {0}", c1.size());
// erase end
System::Console::WriteLine("erase(L'x') = {0}", c1.erase(L'x'));
System::Console::WriteLine("erase(L'e') = {0}", c1.erase(L'e'));
return (0);
}
[a 1] [b 2] [c 3]
erase(begin()) = [b 2]
[b 2] [c 3] [d 4] [e 5]
erase(begin(), end()-1) = [e 5]
size() = 1
erase(L'x') = 0
erase(L'e') = 1
multimap::find
Wyszukuje element, który odpowiada określonemu kluczowi.
Składnia
iterator find(key_type key);
Parametry
key
Wartość klucza do wyszukania.
Uwagi
Jeśli co najmniej jeden element w kontrolowanej sekwencji ma równoważną kolejność z key
, funkcja składowa zwraca iterator wyznaczający jeden z tych elementów; w przeciwnym razie zwraca wartośćend()
. Służy do lokalizowania elementu aktualnie w kontrolowanej sekwencji, która pasuje do określonego klucza.
Przykład
// cliext_multimap_find.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
System::Console::WriteLine("find {0} = {1}",
L'A', c1.find(L'A') != c1.end());
Mymultimap::iterator it = c1.find(L'b');
System::Console::WriteLine("find {0} = [{1} {2}]",
L'b', it->first, it->second);
System::Console::WriteLine("find {0} = {1}",
L'C', c1.find(L'C') != c1.end());
return (0);
}
[a 1] [b 2] [c 3]
find A = False
find b = [b 2]
find C = False
multimap::generic_container
Typ interfejsu ogólnego dla kontenera.
Składnia
typedef Microsoft::VisualC::StlClr::
ITree<GKey, GValue>
generic_container;
Uwagi
Typ opisuje interfejs ogólny dla tej klasy kontenera szablonu.
Przykład
// cliext_multimap_generic_container.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct a generic container
Mymultimap::generic_container^ gc1 = %c1;
for each (Mymultimap::value_type elem in gc1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// modify generic and display original
gc1->insert(Mymultimap::make_value(L'd', 4));
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// modify original and display generic
c1.insert(Mymultimap::make_value(L'e', 5));
for each (Mymultimap::value_type elem in gc1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
[a 1] [b 2] [c 3]
[a 1] [b 2] [c 3] [d 4]
[a 1] [b 2] [c 3] [d 4] [e 5]
multimap::generic_iterator
Typ iteratora do użycia z interfejsem ogólnym kontenera.
Składnia
typedef Microsoft::VisualC::StlClr::Generic::
ContainerBidirectionalIterator<generic_value>
generic_iterator;
Uwagi
Typ opisuje iterator ogólny, który może być używany z interfejsem ogólnym dla tej klasy kontenera szablonu.
Przykład
// cliext_multimap_generic_iterator.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct a generic container
Mymultimap::generic_container^ gc1 = %c1;
for each (Mymultimap::value_type elem in gc1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// get an element and display it
Mymultimap::generic_iterator gcit = gc1->begin();
Mymultimap::generic_value gcval = *gcit;
System::Console::Write("[{0} {1}] ", gcval->first, gcval->second);
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
[a 1] [b 2] [c 3]
[a 1]
multimap::generic_reverse_iterator
Typ iteratora wstecznego do użycia z interfejsem ogólnym kontenera.
Składnia
typedef Microsoft::VisualC::StlClr::Generic::
ReverseRandomAccessIterator<generic_value>
generic_reverse_iterator;
Uwagi
Typ opisuje ogólny iterator odwrotny, który może być używany z interfejsem ogólnym dla tej klasy kontenera szablonu.
Przykład
// cliext_multimap_generic_reverse_iterator.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct a generic container
Mymultimap::generic_container^ gc1 = %c1;
for each (Mymultimap::value_type elem in gc1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// get an element and display it
Mymultimap::generic_reverse_iterator gcit = gc1->rbegin();
Mymultimap::generic_value gcval = *gcit;
System::Console::WriteLine("[{0} {1}] ", gcval->first, gcval->second);
return (0);
}
[a 1] [b 2] [c 3]
[a 1] [b 2] [c 3]
[c 3]
multimap::generic_value
Typ elementu do użycia z interfejsem ogólnym kontenera.
Składnia
typedef GValue generic_value;
Uwagi
Typ opisuje obiekt typu GValue
opisujący przechowywaną wartość elementu do użycia z interfejsem ogólnym dla tej klasy kontenera szablonu.
Przykład
// cliext_multimap_generic_value.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct a generic container
Mymultimap::generic_container^ gc1 = %c1;
for each (Mymultimap::value_type elem in gc1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// get an element and display it
Mymultimap::generic_iterator gcit = gc1->begin();
Mymultimap::generic_value gcval = *gcit;
System::Console::WriteLine("[{0} {1}] ", gcval->first, gcval->second);
return (0);
}
[a 1] [b 2] [c 3]
[a 1] [b 2] [c 3]
[a 1]
multimap::insert
Dodaje elementy.
Składnia
iterator insert(value_type val);
iterator insert(iterator where, value_type val);
template<typename InIter>
void insert(InIter first, InIter last);
void insert(System::Collections::Generic::IEnumerable<value_type>^ right);
Parametry
first
Początek zakresu do wstawienia.
last
Koniec zakresu do wstawienia.
right
Wyliczenie do wstawienia.
val
Wartość klucza do wstawienia.
where
Gdzie w kontenerze do wstawienia (tylko wskazówka).
Uwagi
Każda z funkcji składowych wstawia sekwencję określoną przez pozostałe operandy.
Pierwsza funkcja składowa wstawia element z wartością val
i zwraca iterator, który wyznacza nowo wstawiony element. Służy do wstawiania pojedynczego elementu.
Druga funkcja składowa wstawia element z wartością val
, używając where
jako wskazówki (w celu zwiększenia wydajności) i zwraca iterator, który wyznacza nowo wstawiony element. Służy do wstawiania pojedynczego elementu, który może znajdować się obok znanego elementu.
Trzecia funkcja składowa wstawia sekwencję [first
, last
). Służy do wstawiania zera lub większej liczby elementów skopiowanych z innej sekwencji.
Czwarta funkcja składowa wstawia sekwencję wyznaczoną przez element right
. Służy do wstawiania sekwencji opisanej przez moduł wyliczający.
Wstawienie każdego elementu wymaga czasu proporcjonalnego do logarytmu liczby elementów w kontrolowanej sekwencji. Wstawianie może wystąpić w amortyzowanym stałym czasie, jednak biorąc pod uwagę wskazówkę, która wyznacza element obok punktu wstawiania.
Przykład
// cliext_multimap_insert.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// insert a single value, unique and duplicate
Mymultimap::iterator it =
c1.insert(Mymultimap::make_value(L'x', 24));
System::Console::WriteLine("insert([L'x' 24]) = [{0} {1}]",
it->first, it->second);
it = c1.insert(Mymultimap::make_value(L'b', 2));
System::Console::WriteLine("insert([L'b' 2]) = [{0} {1}]",
it->first, it->second);
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// insert a single value with hint
it = c1.insert(c1.begin(), Mymultimap::make_value(L'y', 25));
System::Console::WriteLine("insert(begin(), [L'y' 25]) = [{0} {1}]",
it->first, it->second);
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// insert an iterator range
Mymultimap c2;
it = c1.end();
c2.insert(c1.begin(), --it);
for each (Mymultimap::value_type elem in c2)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// insert an enumeration
Mymultimap c3;
c3.insert( // NOTE: cast is not needed
(System::Collections::Generic::
IEnumerable<Mymultimap::value_type>^)%c1);
for each (Mymultimap::value_type elem in c3)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
insert([L'x' 24]) = [x 24]
insert([L'b' 2]) = [b 2]
[a 1] [b 2] [b 2] [c 3] [x 24]
insert(begin(), [L'y' 25]) = [y 25]
[a 1] [b 2] [b 2] [c 3] [x 24] [y 25]
[a 1] [b 2] [b 2] [c 3] [x 24]
[a 1] [b 2] [b 2] [c 3] [x 24] [y 25]
multimap::iterator
Typ iteratora dla kontrolowanej sekwencji.
Składnia
typedef T1 iterator;
Uwagi
Typ opisuje obiekt nieokreślonego typu T1
, który może służyć jako iterator dwukierunkowy dla kontrolowanej sekwencji.
Przykład
// cliext_multimap_iterator.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
Mymultimap::iterator it = c1.begin();
for (; it != c1.end(); ++it)
System::Console::Write("[{0} {1}] ", it->first, it->second);
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
multimap::key_comp
Kopiuje delegata porządkowania dla dwóch kluczy.
Składnia
key_compare^key_comp();
Uwagi
Funkcja składowa zwraca delegata porządkowania używanego do porządkowania kontrolowanej sekwencji. Służy do porównywania dwóch kluczy.
Przykład
// cliext_multimap_key_comp.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
Mymultimap::key_compare^ kcomp = c1.key_comp();
System::Console::WriteLine("compare(L'a', L'a') = {0}",
kcomp(L'a', L'a'));
System::Console::WriteLine("compare(L'a', L'b') = {0}",
kcomp(L'a', L'b'));
System::Console::WriteLine("compare(L'b', L'a') = {0}",
kcomp(L'b', L'a'));
System::Console::WriteLine();
// test a different ordering rule
Mymultimap c2 = cliext::greater<wchar_t>();
kcomp = c2.key_comp();
System::Console::WriteLine("compare(L'a', L'a') = {0}",
kcomp(L'a', L'a'));
System::Console::WriteLine("compare(L'a', L'b') = {0}",
kcomp(L'a', L'b'));
System::Console::WriteLine("compare(L'b', L'a') = {0}",
kcomp(L'b', L'a'));
return (0);
}
compare(L'a', L'a') = False
compare(L'a', L'b') = True
compare(L'b', L'a') = False
compare(L'a', L'a') = False
compare(L'a', L'b') = False
compare(L'b', L'a') = True
multimap::key_compare
Delegat porządkowania dla dwóch kluczy.
Składnia
Microsoft::VisualC::StlClr::BinaryDelegate<GKey, GKey, bool>
key_compare;
Uwagi
Typ jest synonimem delegata, który określa kolejność jego kluczowych argumentów.
Przykład
// cliext_multimap_key_compare.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
Mymultimap::key_compare^ kcomp = c1.key_comp();
System::Console::WriteLine("compare(L'a', L'a') = {0}",
kcomp(L'a', L'a'));
System::Console::WriteLine("compare(L'a', L'b') = {0}",
kcomp(L'a', L'b'));
System::Console::WriteLine("compare(L'b', L'a') = {0}",
kcomp(L'b', L'a'));
System::Console::WriteLine();
// test a different ordering rule
Mymultimap c2 = cliext::greater<wchar_t>();
kcomp = c2.key_comp();
System::Console::WriteLine("compare(L'a', L'a') = {0}",
kcomp(L'a', L'a'));
System::Console::WriteLine("compare(L'a', L'b') = {0}",
kcomp(L'a', L'b'));
System::Console::WriteLine("compare(L'b', L'a') = {0}",
kcomp(L'b', L'a'));
return (0);
}
compare(L'a', L'a') = False
compare(L'a', L'b') = True
compare(L'b', L'a') = False
compare(L'a', L'a') = False
compare(L'a', L'b') = False
compare(L'b', L'a') = True
multimap::key_type
Typ klucza sortowania.
Składnia
typedef Key key_type;
Uwagi
Typ jest synonimem parametru Key
szablonu .
Przykład
// cliext_multimap_key_type.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]" using key_type
for (Mymultimap::iterator it = c1.begin(); it != c1.end(); ++it)
{ // store element in key_type object
Mymultimap::key_type val = it->first;
System::Console::Write("{0} ", val);
}
System::Console::WriteLine();
return (0);
}
a b c
multimap::lower_bound
Znajduje początek zakresu, który pasuje do określonego klucza.
Składnia
iterator lower_bound(key_type key);
Parametry
key
Wartość klucza do wyszukania.
Uwagi
Funkcja składowa określa pierwszy element X
w kontrolowanej sekwencji, który ma równoważną kolejność do key
. Jeśli taki element nie istnieje, zwraca wartość end()
; w przeciwnym razie zwraca iterator, który wyznacza X
wartość . Służy do lokalizowania początku sekwencji elementów aktualnie w kontrolowanej sekwencji, która jest zgodna z określonym kluczem.
Przykład
// cliext_multimap_lower_bound.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
System::Console::WriteLine("lower_bound(L'x')==end() = {0}",
c1.lower_bound(L'x') == c1.end());
Mymultimap::iterator it = c1.lower_bound(L'a');
System::Console::WriteLine("*lower_bound(L'a') = [{0} {1}]",
it->first, it->second);
it = c1.lower_bound(L'b');
System::Console::WriteLine("*lower_bound(L'b') = [{0} {1}]",
it->first, it->second);
return (0);
}
[a 1] [b 2] [c 3]
lower_bound(L'x')==end() = True
*lower_bound(L'a') = [a 1]
*lower_bound(L'b') = [b 2]
multimap::make_value
Tworzy obiekt wartości.
Składnia
static value_type make_value(key_type key, mapped_type mapped);
Parametry
key
Wartość klucza do użycia.
mapped
Zamapowana wartość do wyszukania.
Uwagi
Funkcja składowa zwraca value_type
obiekt, którego klucz jest key
i którego zamapowana wartość to mapped
. Służy do tworzenia obiektu odpowiedniego do użycia z kilkoma innymi funkcjami składowymi.
Przykład
// cliext_multimap_make_value.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
multimap::mapped_type
Typ mapowanej wartości skojarzonej z poszczególnymi kluczami.
Składnia
typedef Mapped mapped_type;
Uwagi
Typ jest synonimem parametru Mapped
szablonu .
Przykład
// cliext_multimap_mapped_type.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]" using mapped_type
for (Mymultimap::iterator it = c1.begin(); it != c1.end(); ++it)
{ // store element in mapped_type object
Mymultimap::mapped_type val = it->second;
System::Console::Write("{0} ", val);
}
System::Console::WriteLine();
return (0);
}
1 2 3
multimap::multimap
Konstruuje obiekt kontenera.
Składnia
multimap();
explicit multimap(key_compare^ pred);
multimap(multimap<Key, Mapped>% right);
multimap(multimap<Key, Mapped>^ right);
template<typename InIter>
multimapmultimap(InIter first, InIter last);
template<typename InIter>
multimap(InIter first, InIter last,
key_compare^ pred);
multimap(System::Collections::Generic::IEnumerable<GValue>^ right);
multimap(System::Collections::Generic::IEnumerable<GValue>^ right,
key_compare^ pred);
Parametry
first
Początek zakresu do wstawienia.
last
Koniec zakresu do wstawienia.
pred
Porządkowanie predykatu dla kontrolowanej sekwencji.
right
Obiekt lub zakres do wstawienia.
Uwagi
Konstruktor:
multimap();
inicjuje kontrolowaną sekwencję bez elementów z domyślnym predykatem key_compare()
porządkowania . Służy do określania pustej, kontrolowanej sekwencji początkowej z domyślnym predykatem porządkowania.
Konstruktor:
explicit multimap(key_compare^ pred);
inicjuje kontrolowaną sekwencję bez elementów z predykatem pred
porządkowania . Służy do określania pustej, kontrolowanej sekwencji początkowej z określonym predykatem porządkowania.
Konstruktor:
multimap(multimap<Key, Mapped>% right);
inicjuje kontrolowaną sekwencję z sekwencją [right.begin()
, right.end()
), z domyślnym predykatem porządkowania. Służy do określania początkowej kontrolowanej sekwencji, która jest kopią sekwencji kontrolowanej przez multimap
obiekt right
, z domyślnym predykatem porządkowania.
Konstruktor:
multimap(multimap<Key, Mapped>^ right);
inicjuje kontrolowaną sekwencję z sekwencją [right->begin()
, right->end()
), z domyślnym predykatem porządkowania. Służy do określania początkowej kontrolowanej sekwencji, która jest kopią sekwencji kontrolowanej przez multimap
obiekt right
, z domyślnym predykatem porządkowania.
Konstruktor:
template<typename InIter> multimap(InIter first, InIter last);
inicjuje kontrolowaną sekwencję z sekwencją [first
, last
), z domyślnym predykatem porządkowania. Służy do tworzenia kontrolowanej sekwencji kopii innej sekwencji z domyślnym predykatem porządkowania.
Konstruktor:
template<typename InIter> multimap(InIter first, InIter last, key_compare^ pred);
inicjuje kontrolowaną sekwencję za pomocą sekwencji [first
, last
), z predykatem pred
porządkowania . Służy do tworzenia kontrolowanej sekwencji kopii innej sekwencji z określonym predykatem porządkowania.
Konstruktor:
multimap(System::Collections::Generic::IEnumerable<Key>^ right);
inicjuje kontrolowaną sekwencję z sekwencją wyznaczoną przez moduł right
wyliczający , z domyślnym predykatem porządkowania. Służy do tworzenia kontrolowanej sekwencji kopii innej sekwencji opisanej przez moduł wyliczający z domyślnym predykatem porządkowania.
Konstruktor:
multimap(System::Collections::Generic::IEnumerable<Key>^ right, key_compare^ pred);
inicjuje kontrolowaną sekwencję z sekwencją wyznaczoną przez moduł right
wyliczający , z predykatem pred
porządkowania . Służy do tworzenia kontrolowanej sekwencji kopii innej sekwencji opisanej przez moduł wyliczający z określonym predykatem porządkowania.
Przykład
// cliext_multimap_construct.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
// construct an empty container
Mymultimap c1;
System::Console::WriteLine("size() = {0}", c1.size());
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct with an ordering rule
Mymultimap c2 = cliext::greater_equal<wchar_t>();
System::Console::WriteLine("size() = {0}", c2.size());
c2.insert(c1.begin(), c1.end());
for each (Mymultimap::value_type elem in c2)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct with an iterator range
Mymultimap c3(c1.begin(), c1.end());
for each (Mymultimap::value_type elem in c3)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct with an iterator range and an ordering rule
Mymultimap c4(c1.begin(), c1.end(),
cliext::greater_equal<wchar_t>());
for each (Mymultimap::value_type elem in c4)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct with an enumeration
Mymultimap c5( // NOTE: cast is not needed
(System::Collections::Generic::IEnumerable<
Mymultimap::value_type>^)%c3);
for each (Mymultimap::value_type elem in c5)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct with an enumeration and an ordering rule
Mymultimap c6( // NOTE: cast is not needed
(System::Collections::Generic::IEnumerable<
Mymultimap::value_type>^)%c3,
cliext::greater_equal<wchar_t>());
for each (Mymultimap::value_type elem in c6)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct by copying another container
Mymultimap c7(c4);
for each (Mymultimap::value_type elem in c7)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct by copying a container handle
Mymultimap c8(%c3);
for each (Mymultimap::value_type elem in c8)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
return (0);
}
size() = 0
[a 1] [b 2] [c 3]
size() = 0
[c 3] [b 2] [a 1]
[a 1] [b 2] [c 3]
[c 3] [b 2] [a 1]
[a 1] [b 2] [c 3]
[c 3] [b 2] [a 1]
[c 3] [b 2] [a 1]
[a 1] [b 2] [c 3]
multimap::operator=
Zastępuje kontrolowaną sekwencję.
Składnia
multimap<Key, Mapped>% operator=(multimap<Key, Mapped>% right);
Parametry
right
Kontener do skopiowania.
Uwagi
Operator elementu członkowskiego kopiuje right
do obiektu, a następnie zwraca wartość *this
. Służy do zastępowania kontrolowanej sekwencji kopią kontrolowanej sekwencji w pliku right
.
Przykład
// cliext_multimap_operator_as.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// assign to a new container
Mymultimap c2;
c2 = c1;
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c2)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
[a 1] [b 2] [c 3]
multimap::rbegin
Wyznacza początek odwróconej kontrolowanej sekwencji.
Składnia
reverse_iterator rbegin();
Uwagi
Funkcja składowa zwraca iterator odwrotny, który wyznacza ostatni element kontrolowanej sekwencji lub tuż poza początkiem pustej sekwencji. W związku z tym wyznacza beginning
sekwencję odwrotną. Służy do uzyskania iteratora, który wyznacza current
początek kontrolowanej sekwencji widocznej w odwrotnej kolejności, ale jego stan może ulec zmianie, jeśli długość kontrolowanej sekwencji ulegnie zmianie.
Przykład
// cliext_multimap_rbegin.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// inspect first two items in reversed sequence
Mymultimap::reverse_iterator rit = c1.rbegin();
System::Console::WriteLine("*rbegin() = [{0} {1}]",
rit->first, rit->second);
++rit;
System::Console::WriteLine("*++rbegin() = [{0} {1}]",
rit->first, rit->second);
return (0);
}
[a 1] [b 2] [c 3]
*rbegin() = [c 3]
*++rbegin() = [b 2]
multimap::reference
Typ odwołania do elementu.
Składnia
typedef value_type% reference;
Uwagi
Typ opisuje odwołanie do elementu.
Przykład
// cliext_multimap_reference.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
Mymultimap::iterator it = c1.begin();
for (; it != c1.end(); ++it)
{ // get a reference to an element
Mymultimap::reference ref = *it;
System::Console::Write("[{0} {1}] ", ref->first, ref->second);
}
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
multimap::rend
Wyznacza koniec odwróconej kontrolowanej sekwencji.
Składnia
reverse_iterator rend();
Uwagi
Funkcja składowa zwraca iterator odwrotny, który wskazuje tuż poza początkiem kontrolowanej sekwencji. W związku z tym wyznacza end
sekwencję odwrotną. Służy do uzyskania iteratora, który wyznacza current
koniec kontrolowanej sekwencji widocznej w odwrotnej kolejności, ale jego stan może ulec zmianie, jeśli długość kontrolowanej sekwencji ulegnie zmianie.
Przykład
// cliext_multimap_rend.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// inspect first two items in reversed sequence
Mymultimap::reverse_iterator rit = c1.rend();
--rit;
--rit;
System::Console::WriteLine("*-- --rend() = [{0} {1}]",
rit->first, rit->second);
++rit;
System::Console::WriteLine("*--rend() = [{0} {1}]",
rit->first, rit->second);
return (0);
}
[a 1] [b 2] [c 3]
*-- --rend() = [b 2]
*--rend() = [a 1]
multimap::reverse_iterator
Typ iteratora odwrotnego dla kontrolowanej sekwencji.
Składnia
typedef T3 reverse_iterator;
Uwagi
Typ opisuje obiekt nieokreślonego typu T3
, który może służyć jako iterator odwrotny dla kontrolowanej sekwencji.
Przykład
// cliext_multimap_reverse_iterator.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]" reversed
Mymultimap::reverse_iterator rit = c1.rbegin();
for (; rit != c1.rend(); ++rit)
System::Console::Write("[{0} {1}] ", rit->first, rit->second);
System::Console::WriteLine();
return (0);
}
[c 3] [b 2] [a 1]
multimap::size
Liczy liczbę elementów.
Składnia
size_type size();
Uwagi
Funkcja składowa zwraca długość kontrolowanej sekwencji. Służy do określania liczby elementów aktualnie w kontrolowanej sekwencji. Jeśli chodzi o to, czy sekwencja ma rozmiar niezerowy, zobacz empty()
.
Przykład
// cliext_multimap_size.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// clear the container and reinspect
c1.clear();
System::Console::WriteLine("size() = {0} after clearing", c1.size());
// add elements and clear again
c1.insert(Mymultimap::make_value(L'd', 4));
c1.insert(Mymultimap::make_value(L'e', 5));
System::Console::WriteLine("size() = {0} after adding 2", c1.size());
return (0);
}
[a 1] [b 2] [c 3]
size() = 0 after clearing
size() = 2 after adding 2
multimap::size_type
Typ odległości ze znakiem między dwoma elementami.
Składnia
typedef int size_type;
Uwagi
Typ opisuje nie ujemną liczbę elementów.
Przykład
// cliext_multimap_size_type.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// compute positive difference
Mymultimap::size_type diff = 0;
for (Mymultimap::iterator it = c1.begin(); it != c1.end(); ++it)
++diff;
System::Console::WriteLine("end()-begin() = {0}", diff);
return (0);
}
[a 1] [b 2] [c 3]
end()-begin() = 3
multimap::swap
Zamienia zawartości dwóch kontenerów.
Składnia
void swap(multimap<Key, Mapped>% right);
Parametry
right
Kontener do zamiany zawartości za pomocą polecenia .
Uwagi
Funkcja składowa zamienia kontrolowane sekwencje między this
i right
. Robi to w stałym czasie i nie zgłasza żadnych wyjątków. Używasz go jako szybkiego sposobu wymiany zawartości dwóch kontenerów.
Przykład
// cliext_multimap_swap.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct another container with repetition of values
Mymultimap c2;
c2.insert(Mymultimap::make_value(L'd', 4));
c2.insert(Mymultimap::make_value(L'e', 5));
c2.insert(Mymultimap::make_value(L'f', 6));
for each (Mymultimap::value_type elem in c2)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// swap and redisplay
c1.swap(c2);
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
for each (Mymultimap::value_type elem in c2)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
[d 4] [e 5] [f 6]
[d 4] [e 5] [f 6]
[a 1] [b 2] [c 3]
multimap::to_array
Kopiuje kontrolowaną sekwencję do nowej tablicy.
Składnia
cli::array<value_type>^ to_array();
Uwagi
Funkcja składowa zwraca tablicę zawierającą kontrolowaną sekwencję. Służy do uzyskania kopii kontrolowanej sekwencji w postaci tablicy.
Przykład
// cliext_multimap_to_array.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// copy the container and modify it
cli::array<Mymultimap::value_type>^ a1 = c1.to_array();
c1.insert(Mymultimap::make_value(L'd', 4));
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// display the earlier array copy
for each (Mymultimap::value_type elem in a1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3] [d 4]
[a 1] [b 2] [c 3]
multimap::upper_bound
Znajduje koniec zakresu, który pasuje do określonego klucza.
Składnia
iterator upper_bound(key_type key);
Parametry
key
Wartość klucza do wyszukania.
Uwagi
Funkcja składowa określa ostatni element X
w kontrolowanej sekwencji, który ma równoważną kolejność do key
. Jeśli taki element nie istnieje lub jeśli X
jest ostatnim elementem w kontrolowanej sekwencji, zwraca wartość ; w przeciwnym razie zwraca end()
iterator, który wyznacza pierwszy element poza X
. Służy do lokalizowania końca sekwencji elementów aktualnie w kontrolowanej sekwencji zgodnej z określonym kluczem.
Przykład
// cliext_multimap_upper_bound.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
System::Console::WriteLine("upper_bound(L'x')==end() = {0}",
c1.upper_bound(L'x') == c1.end());
Mymultimap::iterator it = c1.upper_bound(L'a');
System::Console::WriteLine("*upper_bound(L'a') = [{0} {1}]",
it->first, it->second);
it = c1.upper_bound(L'b');
System::Console::WriteLine("*upper_bound(L'b') = [{0} {1}]",
it->first, it->second);
return (0);
}
[a 1] [b 2] [c 3]
upper_bound(L'x')==end() = True
*upper_bound(L'a') = [b 2]
*upper_bound(L'b') = [c 3]
multimap::value_comp
Kopiuje delegata porządkowania dla dwóch wartości elementów.
Składnia
value_compare^ value_comp();
Uwagi
Funkcja składowa zwraca delegata porządkowania używanego do porządkowania kontrolowanej sekwencji. Służy do porównywania dwóch wartości elementów.
Przykład
// cliext_multimap_value_comp.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::map<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
Mymultimap::value_compare^ kcomp = c1.value_comp();
System::Console::WriteLine("compare([L'a', 1], [L'a', 1]) = {0}",
kcomp(Mymultimap::make_value(L'a', 1),
Mymultimap::make_value(L'a', 1)));
System::Console::WriteLine("compare([L'a', 1], [L'b', 2]) = {0}",
kcomp(Mymultimap::make_value(L'a', 1),
Mymultimap::make_value(L'b', 2)));
System::Console::WriteLine("compare([L'b', 2], [L'a', 1]) = {0}",
kcomp(Mymultimap::make_value(L'b', 2),
Mymultimap::make_value(L'a', 1)));
System::Console::WriteLine();
return (0);
}
compare([L'a', 1], [L'a', 1]) = False
compare([L'a', 1], [L'b', 2]) = True
compare([L'b', 2], [L'a', 1]) = False
multimap::value_compare
Delegat porządkowania dla dwóch wartości elementów.
Składnia
Microsoft::VisualC::StlClr::BinaryDelegate<generic_value, generic_value, bool>
value_compare;
Uwagi
Typ jest synonimem delegata, który określa kolejność argumentów jego wartości.
Przykład
// cliext_multimap_value_compare.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::map<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
Mymultimap::value_compare^ kcomp = c1.value_comp();
System::Console::WriteLine("compare([L'a', 1], [L'a', 1]) = {0}",
kcomp(Mymultimap::make_value(L'a', 1),
Mymultimap::make_value(L'a', 1)));
System::Console::WriteLine("compare([L'a', 1], [L'b', 2]) = {0}",
kcomp(Mymultimap::make_value(L'a', 1),
Mymultimap::make_value(L'b', 2)));
System::Console::WriteLine("compare([L'b', 2], [L'a', 1]) = {0}",
kcomp(Mymultimap::make_value(L'b', 2),
Mymultimap::make_value(L'a', 1)));
System::Console::WriteLine();
return (0);
}
compare([L'a', 1], [L'a', 1]) = False
compare([L'a', 1], [L'b', 2]) = True
compare([L'b', 2], [L'a', 1]) = False
multimap::value_type
Typ elementu.
Składnia
typedef generic_value value_type;
Uwagi
Typ jest synonimem .generic_value
Przykład
// cliext_multimap_value_type.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]" using value_type
for (Mymultimap::iterator it = c1.begin(); it != c1.end(); ++it)
{ // store element in value_type object
Mymultimap::value_type val = *it;
System::Console::Write("[{0} {1}] ", val->first, val->second);
}
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
operator!=
(multimapa)
Lista nie jest równa porównywarki.
Składnia
template<typename Key,
typename Mapped>
bool operator!=(multimap<Key, Mapped>% left,
multimap<Key, Mapped>% right);
Parametry
left
Pozostawiony kontener do porównania.
right
Odpowiedni kontener do porównania.
Uwagi
Funkcja operatora zwraca wartość !(left == right)
. Służy do testowania, czy left
nie jest uporządkowane tak samo, jak right
w przypadku, gdy dwa wielomapy są porównywane element według elementu.
Przykład
// cliext_multimap_operator_ne.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// assign to a new container
Mymultimap c2;
c2.insert(Mymultimap::make_value(L'a', 1));
c2.insert(Mymultimap::make_value(L'b', 2));
c2.insert(Mymultimap::make_value(L'd', 4));
// display contents " [a 1] [b 2] [d 4]"
for each (Mymultimap::value_type elem in c2)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
System::Console::WriteLine("[a b c] != [a b c] is {0}",
c1 != c1);
System::Console::WriteLine("[a b c] != [a b d] is {0}",
c1 != c2);
return (0);
}
[a 1] [b 2] [c 3]
[a 1] [b 2] [d 4]
[a b c] != [a b c] is False
[a b c] != [a b d] is True
operator<
(multimapa)
Wyświetl listę mniejszą niż porównanie.
Składnia
template<typename Key,
typename Mapped>
bool operator<(multimap<Key, Mapped>% left,
multimap<Key, Mapped>% right);
Parametry
left
Pozostawiony kontener do porównania.
right
Odpowiedni kontener do porównania.
Uwagi
Funkcja operatora zwraca wartość true, jeśli dla najniższej pozycjii
, dla której !(right[i] < left[i])
ma również wartość true.left[i] < right[i]
W przeciwnym razie zwraca wartość left->size() < right->size()
. Służy do testowania, czy left
jest uporządkowane przed right
, gdy dwa multimapy są porównywane element według elementu.
Przykład
// cliext_multimap_operator_lt.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// assign to a new container
Mymultimap c2;
c2.insert(Mymultimap::make_value(L'a', 1));
c2.insert(Mymultimap::make_value(L'b', 2));
c2.insert(Mymultimap::make_value(L'd', 4));
// display contents " [a 1] [b 2] [d 4]"
for each (Mymultimap::value_type elem in c2)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
System::Console::WriteLine("[a b c] < [a b c] is {0}",
c1 < c1);
System::Console::WriteLine("[a b c] < [a b d] is {0}",
c1 < c2);
return (0);
}
[a 1] [b 2] [c 3]
[a 1] [b 2] [d 4]
[a b c] < [a b c] is False
[a b c] < [a b d] is True
operator<=
(multimapa)
Wyświetl listę mniejszą niż lub równą porównanie.
Składnia
template<typename Key,
typename Mapped>
bool operator<=(multimap<Key, Mapped>% left,
multimap<Key, Mapped>% right);
Parametry
left
Pozostawiony kontener do porównania.
right
Odpowiedni kontener do porównania.
Uwagi
Funkcja operatora zwraca wartość !(right < left)
. Służy do testowania, czy left
nie jest uporządkowana po right
tym, jak dwa mapy wielomapowe są porównywane z elementem.
Przykład
// cliext_multimap_operator_le.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// assign to a new container
Mymultimap c2;
c2.insert(Mymultimap::make_value(L'a', 1));
c2.insert(Mymultimap::make_value(L'b', 2));
c2.insert(Mymultimap::make_value(L'd', 4));
// display contents " [a 1] [b 2] [d 4]"
for each (Mymultimap::value_type elem in c2)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
System::Console::WriteLine("[a b c] <= [a b c] is {0}",
c1 <= c1);
System::Console::WriteLine("[a b d] <= [a b c] is {0}",
c2 <= c1);
return (0);
}
[a 1] [b 2] [c 3]
[a 1] [b 2] [d 4]
[a b c] <= [a b c] is True
[a b d] <= [a b c] is False
operator==
(multimapa)
Wyświetl równe porównanie.
Składnia
template<typename Key,
typename Mapped>
bool operator==(multimap<Key, Mapped>% left,
multimap<Key, Mapped>% right);
Parametry
left
Pozostawiony kontener do porównania.
right
Odpowiedni kontener do porównania.
Uwagi
Funkcja operatora zwraca wartość true tylko wtedy, gdy sekwencje kontrolowane przez left
element i right
mają taką samą długość, a dla każdej pozycji i
, left[i] == right[i]
. Służy do testowania, czy left
jest uporządkowane tak samo, jak right
w przypadku porównywania dwóch map wielomap według elementu.
Przykład
// cliext_multimap_operator_eq.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// assign to a new container
Mymultimap c2;
c2.insert(Mymultimap::make_value(L'a', 1));
c2.insert(Mymultimap::make_value(L'b', 2));
c2.insert(Mymultimap::make_value(L'd', 4));
// display contents " [a 1] [b 2] [d 4]"
for each (Mymultimap::value_type elem in c2)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
System::Console::WriteLine("[a b c] == [a b c] is {0}",
c1 == c1);
System::Console::WriteLine("[a b c] == [a b d] is {0}",
c1 == c2);
return (0);
}
[a 1] [b 2] [c 3]
[a 1] [b 2] [d 4]
[a b c] == [a b c] is True
[a b c] == [a b d] is False
operator>
(multimapa)
Wyświetl listę większą niż porównanie.
Składnia
template<typename Key,
typename Mapped>
bool operator>(multimap<Key, Mapped>% left,
multimap<Key, Mapped>% right);
Parametry
left
Pozostawiony kontener do porównania.
right
Odpowiedni kontener do porównania.
Uwagi
Funkcja operatora zwraca wartość right < left
. Służy do testowania, czy left
jest uporządkowane po right
, gdy dwa mapy wielomapy są porównywane element po elemecie.
Przykład
// cliext_multimap_operator_gt.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// assign to a new container
Mymultimap c2;
c2.insert(Mymultimap::make_value(L'a', 1));
c2.insert(Mymultimap::make_value(L'b', 2));
c2.insert(Mymultimap::make_value(L'd', 4));
// display contents " [a 1] [b 2] [d 4]"
for each (Mymultimap::value_type elem in c2)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
System::Console::WriteLine("[a b c] > [a b c] is {0}",
c1 > c1);
System::Console::WriteLine("[a b d] > [a b c] is {0}",
c2 > c1);
return (0);
}
[a 1] [b 2] [c 3]
[a 1] [b 2] [d 4]
[a b c] > [a b c] is False
[a b d] > [a b c] is True
operator>=
(multimapa)
Wyświetl listę większą niż lub równą porównanie.
Składnia
template<typename Key,
typename Mapped>
bool operator>=(multimap<Key, Mapped>% left,
multimap<Key, Mapped>% right);
Parametry
left
Pozostawiony kontener do porównania.
right
Odpowiedni kontener do porównania.
Uwagi
Funkcja operatora zwraca wartość !(left < right)
. Służy do testowania, czy left
nie jest uporządkowane przed right
, gdy dwa mapy wielomapy są porównywane element według elementu.
Przykład
// cliext_multimap_operator_ge.cpp
// compile with: /clr
#include <cliext/map>
typedef cliext::multimap<wchar_t, int> Mymultimap;
int main()
{
Mymultimap c1;
c1.insert(Mymultimap::make_value(L'a', 1));
c1.insert(Mymultimap::make_value(L'b', 2));
c1.insert(Mymultimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Mymultimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// assign to a new container
Mymultimap c2;
c2.insert(Mymultimap::make_value(L'a', 1));
c2.insert(Mymultimap::make_value(L'b', 2));
c2.insert(Mymultimap::make_value(L'd', 4));
// display contents " [a 1] [b 2] [d 4]"
for each (Mymultimap::value_type elem in c2)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
System::Console::WriteLine("[a b c] >= [a b c] is {0}",
c1 >= c1);
System::Console::WriteLine("[a b c] >= [a b d] is {0}",
c1 >= c2);
return (0);
}
[a 1] [b 2] [c 3]
[a 1] [b 2] [d 4]
[a b c] >= [a b c] is True
[a b c] >= [a b d] is False