hash_multimap
(STL/CLR)
La classe de modèle décrit un objet qui contrôle une séquence d’éléments de longueur variable ayant un accès bidirectionnel. Vous utilisez le conteneur hash_multimap
pour gérer une séquence d’éléments en tant que table de hachage, chaque entrée de table stockant une liste liée bidirectionnelle de nœuds et chaque nœud stockant un élément. Un élément se compose d’une clé, pour classer la séquence et une valeur mappée, qui va le long du trajet.
Dans la description ci-dessous, GValue
il s’agit de la même chose que :
Microsoft::VisualC::StlClr::GenericPair<GKey, GMapped>
où :
GKey
est identique à Key
sauf si ce dernier est un type ref, auquel cas il s’agit Key^
GMapped
est identique à Mapped
sauf si ce dernier est un type ref, auquel cas il s’agit Mapped^
Syntaxe
template<typename Key,
typename Mapped>
ref class hash_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::IHash<Gkey, GValue>
{ ..... };
Paramètres
Key
Type du composant clé d’un élément dans la séquence contrôlée.
Mapped
Type de l’autre composant d’un élément dans la séquence contrôlée.
Spécifications
Header :<cliext/hash_map>
Espace de noms : cliext
Déclarations
Définition de types | Description |
---|---|
hash_multimap::const_iterator |
Type d'un itérateur constant pour la séquence contrôlée. |
hash_multimap::const_reference |
Type d'une référence constante à un élément. |
hash_multimap::const_reverse_iterator |
Type d'un itérateur inserve constant pour la séquence contrôlée. |
hash_multimap::difference_type |
Type d’une distance (éventuellement signée) entre deux éléments. |
hash_multimap::generic_container |
Type de l’interface générique pour le conteneur. |
hash_multimap::generic_iterator |
Type d’itérateur pour l’interface générique du conteneur. |
hash_multimap::generic_reverse_iterator |
Type d’itérateur inverse pour l’interface générique du conteneur. |
hash_multimap::generic_value |
Type d’un élément pour l’interface générique du conteneur. |
hash_multimap::hasher |
Délégué de hachage pour une clé. |
hash_multimap::iterator |
Type d'un itérateur pour la séquence contrôlée. |
hash_multimap::key_compare |
Délégué de classement pour deux clés. |
hash_multimap::key_type |
Type d'une clé de tri. |
hash_multimap::mapped_type |
Type de la valeur mappée associée à chaque clé. |
hash_multimap::reference |
Type d'une référence à un élément. |
hash_multimap::reverse_iterator |
Type d'un itérateur inverse pour la séquence contrôlée. |
hash_multimap::size_type |
Type d’une distance (non négative) entre deux éléments. |
hash_multimap::value_compare |
Délégué de classement pour deux valeurs d’élément. |
hash_multimap::value_type |
Type d’un élément. |
Fonction membre | Description |
---|---|
hash_multimap::begin |
Désigne le début de la séquence contrôlée. |
hash_multimap::bucket_count |
Compte le nombre de compartiments. |
hash_multimap::clear |
Supprime tous les éléments. |
hash_multimap::count |
Compte les éléments correspondant à une clé spécifiée. |
hash_multimap::empty |
Vérifie l'absence d'éléments. |
hash_multimap::end |
Désigne la fin de la séquence contrôlée. |
hash_multimap::equal_range |
Recherche une plage qui correspond à une clé spécifiée. |
hash_multimap::erase |
Supprime les éléments placés aux positions spécifiées. |
hash_multimap::find |
Recherche un élément qui correspond à une clé spécifiée. |
hash_multimap::hash_delegate |
Copie le délégué de hachage pour une clé. |
hash_multimap::hash_multimap |
Construit un objet conteneur. |
hash_multimap::insert |
Ajoute des éléments. |
hash_multimap::key_comp |
Copie le délégué de classement pour deux clés. |
hash_multimap::load_factor |
Compte le nombre moyen d'éléments par compartiment. |
hash_multimap::lower_bound |
Recherche le début de la plage qui correspond à une clé spécifiée. |
hash_multimap::make_value |
Construit un objet valeur. |
hash_multimap::max_load_factor |
Obtient ou définit le nombre maximal d’éléments par compartiment. |
hash_multimap::rbegin |
Désigne le début de la séquence contrôlée inverse. |
hash_multimap::rehash |
Régénère la table de hachage. |
hash_multimap::rend |
Désigne la fin de la séquence contrôlée inverse. |
hash_multimap::size |
Compte le nombre d'éléments. |
hash_multimap::swap |
Échange le contenu de deux conteneurs. |
hash_multimap::to_array |
Copie la séquence contrôlée dans un nouveau tableau. |
hash_multimap::upper_bound |
Recherche la fin de la plage qui correspond à une clé spécifiée. |
hash_multimap::value_comp |
Copie le délégué de classement pour deux valeurs d’élément. |
Opérateur | Description |
---|---|
hash_multimap::operator= |
Remplace la séquence contrôlée. |
Interfaces
Interface | Description |
---|---|
ICloneable | Dupliquer un objet. |
IEnumerable | Séquencer des éléments. |
ICollection | Conservez le groupe d’éléments. |
IEnumerable<T> | Séquence à l’aide d’éléments typés. |
ICollection<T> | Conservez le groupe d’éléments typés. |
IHash<Key, Value> |
Gérer le conteneur générique. |
Notes
L’objet alloue et libère le stockage pour la séquence qu’il contrôle en tant que nœuds individuels dans une liste liée bidirectionnelle. Pour accélérer l’accès, l’objet conserve également un tableau de pointeurs de longueur variable dans la liste (la table de hachage), gérant efficacement l’ensemble de la liste sous la forme d’une séquence de sous-listes ou de compartiments. Il insère des éléments dans un compartiment qu’il conserve ordonné en modifiant les liens entre les nœuds, jamais en copiant le contenu d’un nœud vers un autre. Cela signifie que vous pouvez insérer et supprimer librement des éléments sans déranger les éléments restants.
L’objet commande chaque compartiment qu’il contrôle en appelant un objet délégué stocké de type hash_set::key_compare
. Vous pouvez spécifier l’objet délégué stocké lorsque vous construisez le hash_set ; si vous ne spécifiez aucun objet délégué, la valeur par défaut est la comparaison operator<=(key_type, key_type)
.
Vous accédez à l’objet délégué stocké en appelant la fonction hash_set::key_comp
membre. Un tel objet délégué doit définir un ordre équivalent entre les clés de type hash_set::key_type
. Cela signifie que, pour deux clés X
et Y
:
key_comp()(X, Y)
retourne le même résultat booléen sur chaque appel.
Si key_comp()(X, Y) && key_comp()(Y, X)
c’est vrai, alors X
et Y
sont dits avoir un ordre équivalent.
Toute règle de classement qui se comporte comme operator<=(key_type, key_type)
, operator>=(key_type, key_type)
ou operator==(key_type, key_type)
définit l’ordre équivalent.
Le conteneur garantit uniquement que les éléments dont les clés ont un ordre équivalent (et qui se hachage à la même valeur entière) sont adjacents dans un compartiment. Contrairement à la classe hash_map
de modèle (STL/CLR), un objet de classe hash_multimap
de modèle ne nécessite pas que les clés pour tous les éléments soient uniques. (Deux clés ou plus peuvent avoir un ordre équivalent.)
L’objet détermine quel compartiment doit contenir une clé de classement donnée en appelant un objet délégué stocké de type hash_set::hasher
. Vous accédez à cet objet stocké en appelant la fonction hash_set::hash_delegate
membre pour obtenir une valeur entière qui dépend de la valeur de clé. Vous pouvez spécifier l’objet délégué stocké lorsque vous construisez le hash_set ; si vous spécifiez aucun objet délégué, la valeur par défaut est la fonction System::Object::hash_value(key_type)
. Cela signifie que, pour toutes les clés X
et Y
:
hash_delegate()(X)
retourne le même résultat entier sur chaque appel.
Si X
et Y
ont un ordre équivalent, il hash_delegate()(X)
doit retourner le même résultat entier que hash_delegate()(Y)
.
Chaque élément contient une clé distincte et une valeur mappée. La séquence est représentée de manière à permettre la recherche, l’insertion et la suppression d’un élément arbitraire en temps constant. Autrement dit, le nombre d’opérations est indépendant du nombre d’éléments de la séquence, au moins dans les meilleurs cas. En outre, l’insertion d’un élément invalide aucun itérateur et supprime un élément invalide uniquement les itérateurs qui pointent vers l’élément supprimé.
Si les valeurs hachées ne sont pas distribuées uniformément, toutefois, une table de hachage peut dégénérer. Dans l’extrême (pour une fonction de hachage qui retourne toujours la même valeur), la recherche, l’insertion et la suppression sont proportionnelles au nombre d’éléments de la séquence (temps linéaire). Le conteneur s’efforce de choisir une fonction de hachage raisonnable, une taille moyenne de compartiment et une taille de table de hachage (nombre total de compartiments), mais vous pouvez remplacer n’importe quel ou tous ces choix. Voir, par exemple, les fonctions hash_set::max_load_factor
et hash_set::rehash
.
Un hash_multimap
itérateur bidirectionnel prend en charge les itérateurs, ce qui signifie que vous pouvez passer à des éléments adjacents en fonction d’un itérateur qui désigne un élément dans la séquence contrôlée. Un nœud principal spécial correspond à l’itérateur retourné par end()
. Vous pouvez décrémenter cet itérateur pour atteindre le dernier élément de la séquence contrôlée, le cas échéant. Vous pouvez incrémenter un hash_multimap
itérateur pour atteindre le nœud principal, et il est ensuite comparé à end()
. Mais vous ne pouvez pas déréférencer l’itérateur retourné par end()
.
Vous ne pouvez pas faire référence à un hash_multimap
élément directement en fonction de sa position numérique. Cela nécessite un itérateur d’accès aléatoire.
Un hash_multimap
itérateur stocke un handle sur son nœud associé hash_multimap
, qui stocke à son tour un handle dans son conteneur associé. Vous pouvez utiliser des itérateurs uniquement avec leurs objets conteneur associés. Un hash_multimap
itérateur reste valide tant que son nœud associé hash_multimap
est associé à certains hash_multimap
. De plus, un itérateur valide est déreferencable. Vous pouvez l’utiliser pour accéder ou modifier la valeur de l’élément qu’elle désigne, tant qu’elle n’est pas égale à end()
.
L’effacement ou la suppression d’un élément appelle le destructeur pour sa valeur stockée. La destruction du conteneur efface tous les éléments. Ainsi, un conteneur dont le type d’élément est une classe ref garantit qu’aucun élément n’est hors service du conteneur. Toutefois, un conteneur de handles ne détruit pas ses éléments.
Membres
hash_multimap ::begin
Désigne le début de la séquence contrôlée.
Syntaxe
iterator begin();
Notes
La fonction membre retourne un itérateur bidirectionnel qui désigne le premier élément de la séquence contrôlée, ou juste au-delà de la fin d’une séquence vide. Vous l’utilisez pour obtenir un itérateur qui désigne le current
début de la séquence contrôlée, mais son état peut changer si la longueur de la séquence contrôlée change.
Exemple
// cliext_hash_multimap_begin.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// inspect first two items
Myhash_multimap::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]
hash_multimap ::bucket_count
Compte le nombre de compartiments.
Syntaxe
int bucket_count();
Notes
La fonction membre retourne le nombre actuel de comportements. Vous l’utilisez pour déterminer la taille de la table de hachage.
Exemple
// cliext_hash_multimap_bucket_count.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1 = gcnew Myhash_multimap;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// inspect current parameters
System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
System::Console::WriteLine("max_load_factor() = {0}",
c1.max_load_factor());
System::Console::WriteLine();
// change max_load_factor and redisplay
c1.max_load_factor(0.25f);
System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
System::Console::WriteLine("max_load_factor() = {0}",
c1.max_load_factor());
System::Console::WriteLine();
// rehash and redisplay
c1.rehash(100);
System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
System::Console::WriteLine("max_load_factor() = {0}",
c1.max_load_factor());
return (0);
}
[a 1] [b 2] [c 3]
bucket_count() = 16
load_factor() = 0.1875
max_load_factor() = 4
bucket_count() = 16
load_factor() = 0.1875
max_load_factor() = 0.25
bucket_count() = 128
load_factor() = 0.0234375
max_load_factor() = 0.25
hash_multimap ::clear
Supprime tous les éléments.
Syntaxe
void clear();
Notes
La fonction membre appelle erase(begin(), end())
efficacement . Vous l’utilisez pour vous assurer que la séquence contrôlée est vide.
Exemple
// cliext_hash_multimap_clear.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::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(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
// display contents " [a 1] [b 2]"
for each (Myhash_multimap::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
hash_multimap ::const_iterator
Type d'un itérateur constant pour la séquence contrôlée.
Syntaxe
typedef T2 const_iterator;
Notes
Le type décrit un objet de type T2
non spécifié qui peut servir d’itérateur bidirectionnel constant pour la séquence contrôlée.
Exemple
// cliext_hash_multimap_const_iterator.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
Myhash_multimap::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]
hash_multimap ::const_reference
Type d'une référence constante à un élément.
Syntaxe
typedef value_type% const_reference;
Notes
Le type décrit une référence constante à un élément.
Exemple
// cliext_hash_multimap_const_reference.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
Myhash_multimap::const_iterator cit = c1.begin();
for (; cit != c1.end(); ++cit)
{ // get a const reference to an element
Myhash_multimap::const_reference cref = *cit;
System::Console::Write("[{0} {1}] ", cref->first, cref->second);
}
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
hash_multimap ::const_reverse_iterator
Type d'un itérateur inserve constant pour la séquence contrôlée.
Syntaxe
typedef T4 const_reverse_iterator;
Notes
Le type décrit un objet de type T4
non spécifié qui peut servir d’itérateur inverse constant pour la séquence contrôlée.
Exemple
// cliext_hash_multimap_const_reverse_iterator.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]" reversed
Myhash_multimap::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]
hash_multimap ::count
Recherche le nombre d’éléments qui correspondent à une clé spécifiée.
Syntaxe
size_type count(key_type key);
Paramètres
key
Valeur de clé à rechercher.
Notes
La fonction membre retourne le nombre d’éléments dans la séquence contrôlée qui ont un ordre équivalent avec key
. Vous l’utilisez pour déterminer le nombre d’éléments actuellement dans la séquence contrôlée qui correspondent à une clé spécifiée.
Exemple
// cliext_hash_multimap_count.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::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
hash_multimap ::d ifference_type
Types d’une distance signée entre deux éléments.
Syntaxe
typedef int difference_type;
Notes
Le type décrit un nombre d’éléments potentiellement négatif.
Exemple
// cliext_hash_multimap_difference_type.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// compute positive difference
Myhash_multimap::difference_type diff = 0;
for (Myhash_multimap::iterator it = c1.begin(); it != c1.end(); ++it)
++diff;
System::Console::WriteLine("end()-begin() = {0}", diff);
// compute negative difference
diff = 0;
for (Myhash_multimap::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
hash_multimap ::empty
Vérifie l'absence d'éléments.
Syntaxe
bool empty();
Notes
La fonction membre retourne la valeur true pour une séquence contrôlée vide. Cela équivaut à size() == 0
. Vous l’utilisez pour tester si la valeur hash_multimap
est vide.
Exemple
// cliext_hash_multimap_empty.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::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
hash_multimap ::end
Désigne la fin de la séquence contrôlée.
Syntaxe
iterator end();
Notes
La fonction membre retourne un itérateur bidirectionnel qui pointe juste au-delà de la fin de la séquence contrôlée. Vous l’utilisez pour obtenir un itérateur qui désigne la fin de la séquence contrôlée ; son état ne change pas si la longueur de la séquence contrôlée change.
Exemple
// cliext_hash_multimap_end.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// inspect last two items
Myhash_multimap::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]
hash_multimap ::equal_range
Recherche une plage qui correspond à une clé spécifiée.
Syntaxe
cliext::pair<iterator, iterator> equal_range(key_type key);
Paramètres
key
Valeur de clé à rechercher.
Notes
La fonction membre retourne une paire d’itérateurs cliext::pair<iterator, iterator>(lower_bound(key), upper_bound(key))
. Vous l’utilisez pour déterminer la plage d’éléments actuellement dans la séquence contrôlée qui correspond à une clé spécifiée.
Exemple
// cliext_hash_multimap_equal_range.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
typedef Myhash_multimap::pair_iter_iter Pairii;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::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]
hash_multimap ::erase
Supprime les éléments placés aux positions spécifiées.
Syntaxe
iterator erase(iterator where);
iterator erase(iterator first, iterator last);
bool erase(key_type key)
Paramètres
first
Début de la plage à effacer.
key
Valeur de clé à effacer.
last
Fin de la plage à effacer.
where
Élément à effacer.
Notes
La première fonction membre supprime l’élément de la séquence contrôlée pointée par where
, et retourne un itérateur qui désigne le premier élément restant au-delà de l’élément supprimé, ou end()
s’il n’existe aucun élément de ce type. Vous l’utilisez pour supprimer un seul élément.
La deuxième fonction membre supprime les éléments de la séquence contrôlée dans la plage [first, last)
demi-ouverte et retourne un itérateur qui désigne le premier élément restant au-delà des éléments supprimés, ou end()
s’il n’existe aucun élément de ce type. Vous l’utilisez pour supprimer zéro ou plusieurs éléments contigus.
La troisième fonction membre supprime tout élément de la séquence contrôlée dont la clé a un ordre équivalent et key
retourne le nombre d’éléments supprimés. Vous l’utilisez pour supprimer et compter tous les éléments qui correspondent à une clé spécifiée.
Chaque effacement d’élément prend du temps proportionnel au logarithme du nombre d’éléments dans la séquence contrôlée.
Exemple
// cliext_hash_multimap_erase.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
cliext::hash_multimap<wchar_t, int> c1;
c1.insert(cliext::hash_multimap<wchar_t, int>::make_value(L'a', 1));
c1.insert(cliext::hash_multimap<wchar_t, int>::make_value(L'b', 2));
c1.insert(cliext::hash_multimap<wchar_t, int>::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (cliext::hash_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::hash_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::hash_multimap<wchar_t, int>::make_value(L'd', 4));
c1.insert(cliext::hash_multimap<wchar_t, int>::make_value(L'e', 5));
for each (cliext::hash_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
hash_multimap::find
Recherche un élément qui correspond à une clé spécifiée.
Syntaxe
iterator find(key_type key);
Paramètres
key
Valeur de clé à rechercher.
Notes
Si au moins un élément de la séquence contrôlée a un ordre équivalent avec key
, la fonction membre retourne un itérateur désignant l’un de ces éléments ; sinon, il retourne hash_multimap::end
()
. Vous l’utilisez pour localiser un élément actuellement dans la séquence contrôlée qui correspond à une clé spécifiée.
Exemple
// cliext_hash_multimap_find.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::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());
Myhash_multimap::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
hash_multimap::generic_container
Type de l’interface générique pour le conteneur.
Syntaxe
typedef Microsoft::VisualC::StlClr::
IHash<GKey, GValue>
generic_container;
Notes
Le type décrit l’interface générique pour cette classe de conteneur de modèle.
Exemple
// cliext_hash_multimap_generic_container.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct a generic container
Myhash_multimap::generic_container^ gc1 = %c1;
for each (Myhash_multimap::value_type elem in gc1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// modify generic and display original
gc1->insert(Myhash_multimap::make_value(L'd', 4));
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// modify original and display generic
c1.insert(Myhash_multimap::make_value(L'e', 5));
for each (Myhash_multimap::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]
hash_multimap::generic_iterator
Type d’itérateur à utiliser avec l’interface générique du conteneur.
Syntaxe
typedef Microsoft::VisualC::StlClr::Generic::
ContainerBidirectionalIterator<generic_value>
generic_iterator;
Notes
Le type décrit un itérateur générique qui peut être utilisé avec l’interface générique pour cette classe de conteneur de modèle.
Exemple
// cliext_hash_multimap_generic_iterator.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct a generic container
Myhash_multimap::generic_container^ gc1 = %c1;
for each (Myhash_multimap::value_type elem in gc1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// get an element and display it
Myhash_multimap::generic_iterator gcit = gc1->begin();
Myhash_multimap::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]
hash_multimap::generic_reverse_iterator
Type d’itérateur inverse à utiliser avec l’interface générique du conteneur.
Syntaxe
typedef Microsoft::VisualC::StlClr::Generic::
ReverseRandomAccessIterator<generic_value>
generic_reverse_iterator;
Notes
Le type décrit un itérateur inverse générique qui peut être utilisé avec l’interface générique pour cette classe de conteneur de modèle.
Exemple
// cliext_hash_multimap_generic_reverse_iterator.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct a generic container
Myhash_multimap::generic_container^ gc1 = %c1;
for each (Myhash_multimap::value_type elem in gc1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// get an element and display it
Myhash_multimap::generic_reverse_iterator gcit = gc1->rbegin();
Myhash_multimap::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]
hash_multimap::generic_value
Type d’un élément à utiliser avec l’interface générique du conteneur.
Syntaxe
typedef GValue generic_value;
Notes
Le type décrit un objet de type GValue
qui décrit la valeur de l’élément stocké à utiliser avec l’interface générique pour cette classe de conteneur de modèle.
Exemple
// cliext_hash_multimap_generic_value.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct a generic container
Myhash_multimap::generic_container^ gc1 = %c1;
for each (Myhash_multimap::value_type elem in gc1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// get an element and display it
Myhash_multimap::generic_iterator gcit = gc1->begin();
Myhash_multimap::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]
hash_multimap::hash_delegate
Recherche un élément qui correspond à une clé spécifiée.
Syntaxe
hasher^ hash_delegate();
Notes
La fonction membre retourne le délégué utilisé pour convertir une valeur de clé en entier. Vous l’utilisez pour hacher une clé.
Exemple
// cliext_hash_multimap_hash_delegate.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
Myhash_multimap::hasher^ myhash = c1.hash_delegate();
System::Console::WriteLine("hash(L'a') = {0}", myhash(L'a'));
System::Console::WriteLine("hash(L'b') = {0}", myhash(L'b'));
return (0);
}
hash(L'a') = 1616896120
hash(L'b') = 570892832
hash_multimap::hash_multimap
Construit un objet conteneur.
Syntaxe
hash_multimap();
explicit hash_multimap(key_compare^ pred);
hash_multimap(key_compare^ pred, hasher^ hashfn);
hash_multimap(hash_multimap<Key, Mapped>% right);
hash_multimap(hash_multimap<Key, Mapped>^ right);
template<typename InIter>
hash_multimaphash_multimap(InIter first, InIter last);
template<typename InIter>
hash_multimap(InIter first, InIter last,
key_compare^ pred);
template<typename InIter>
hash_multimap(InIter first, InIter last,
key_compare^ pred, hasher^ hashfn);
hash_multimap(System::Collections::Generic::IEnumerable<GValue>^ right);
hash_multimap(System::Collections::Generic::IEnumerable<GValue>^ right,
key_compare^ pred);
hash_multimap(System::Collections::Generic::IEnumerable<GValue>^ right,
key_compare^ pred, hasher^ hashfn);
Paramètres
first
Début de la plage à insérer.
hashfn
Fonction de hachage pour le mappage des clés aux compartiments.
last
Fin de la plage à insérer.
pred
Classement du prédicat pour la séquence contrôlée.
right
Objet ou plage à insérer.
Notes
Constructeur :
hash_multimap();
initialise la séquence contrôlée sans éléments, avec le prédicat key_compare()
de classement par défaut et la fonction de hachage par défaut. Vous l’utilisez pour spécifier une séquence contrôlée initiale vide, avec le prédicat de classement par défaut et la fonction de hachage.
Constructeur :
explicit hash_multimap(key_compare^ pred);
initialise la séquence contrôlée sans éléments, avec le prédicat pred
de classement et avec la fonction de hachage par défaut. Vous l’utilisez pour spécifier une séquence contrôlée initiale vide, avec le prédicat de classement spécifié et la fonction de hachage par défaut.
Constructeur :
hash_multimap(key_compare^ pred, hasher^ hashfn);
initialise la séquence contrôlée sans éléments, avec le prédicat pred
de classement et avec la fonction hashfn
de hachage. Vous l’utilisez pour spécifier une séquence contrôlée initiale vide, avec le prédicat de classement et la fonction de hachage spécifiés.
Constructeur :
hash_multimap(hash_multimap<Key, Mapped>% right);
initialise la séquence contrôlée avec la séquence [right.begin()
, right.end()
), avec le prédicat de classement par défaut et avec la fonction de hachage par défaut. Vous l’utilisez pour spécifier une séquence contrôlée initiale qui est une copie de la séquence contrôlée par l’objet hash_multimap
right
, avec le prédicat de classement par défaut et la fonction de hachage.
Constructeur :
hash_multimap(hash_multimap<Key, Mapped>^ right);
initialise la séquence contrôlée avec la séquence [right->begin()
, right->end()
), avec le prédicat de classement par défaut et avec la fonction de hachage par défaut. Vous l’utilisez pour spécifier une séquence contrôlée initiale qui est une copie de la séquence contrôlée par l’objet hash_multimap
right
, avec le prédicat de classement par défaut et la fonction de hachage.
Constructeur :
template<typename InIter> hash_multimap(InIter first, InIter last);
initialise la séquence contrôlée avec la séquence [first, last)
, avec le prédicat de classement par défaut et la fonction de hachage par défaut. Vous l’utilisez pour rendre la séquence contrôlée une copie d’une autre séquence, avec le prédicat de classement par défaut et la fonction de hachage.
Constructeur :
template<typename InIter> hash_multimap(InIter first, InIter last, key_compare^ pred);
initialise la séquence contrôlée avec la séquence [first, last)
, avec le prédicat pred
de classement et avec la fonction de hachage par défaut. Vous l’utilisez pour rendre la séquence contrôlée une copie d’une autre séquence, avec le prédicat de classement spécifié et la fonction de hachage par défaut.
Constructeur :
template<typename InIter> hash_multimap(InIter first, InIter last, key_compare^ pred, hasher^ hashfn);
initialise la séquence contrôlée avec la séquence [first, last)
, avec le prédicat pred
de classement et avec la fonction hashfn
de hachage . Vous l’utilisez pour faire de la séquence contrôlée une copie d’une autre séquence, avec le prédicat de classement et la fonction de hachage spécifiés.
Constructeur :
hash_multimap(System::Collections::Generic::IEnumerable<Key>^ right);
initialise la séquence contrôlée avec la séquence désignée par l’énumérateur right
, avec le prédicat de classement par défaut et avec la fonction de hachage par défaut. Vous l’utilisez pour rendre la séquence contrôlée une copie d’une autre séquence décrite par un énumérateur, avec le prédicat de classement par défaut et la fonction de hachage.
Constructeur :
hash_multimap(System::Collections::Generic::IEnumerable<Key>^ right, key_compare^ pred);
initialise la séquence contrôlée avec la séquence désignée par l’énumérateur right
, avec le prédicat pred
de classement et avec la fonction de hachage par défaut. Vous l’utilisez pour rendre la séquence contrôlée une copie d’une autre séquence décrite par un énumérateur, avec le prédicat de classement spécifié et la fonction de hachage par défaut.
Constructeur :
hash_multimap(System::Collections::Generic::IEnumerable<Key>^ right, key_compare^ pred, hasher^ hashfn);
initialise la séquence contrôlée avec la séquence désignée par l’énumérateur right
, avec le prédicat pred
de classement et avec la fonction hashfn
de hachage . Vous l’utilisez pour rendre la séquence contrôlée une copie d’une autre séquence décrite par un énumérateur, avec le prédicat de classement et la fonction de hachage spécifiés.
Exemple
// cliext_hash_multimap_construct.cpp
// compile with: /clr
#include <cliext/hash_map>
int myfun(wchar_t key)
{ // hash a key
return (key ^ 0xdeadbeef);
}
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
// construct an empty container
Myhash_multimap c1;
System::Console::WriteLine("size() = {0}", c1.size());
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct with an ordering rule
Myhash_multimap c2 = cliext::greater_equal<wchar_t>();
System::Console::WriteLine("size() = {0}", c2.size());
c2.insert(c1.begin(), c1.end());
for each (Myhash_multimap::value_type elem in c2)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct with an ordering rule and hash function
Myhash_multimap c2h(cliext::greater_equal<wchar_t>(),
gcnew Myhash_multimap::hasher(&myfun));
System::Console::WriteLine("size() = {0}", c2h.size());
c2h.insert(c1.begin(), c1.end());
for each (Myhash_multimap::value_type elem in c2h)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
System::Console::WriteLine();
// construct with an iterator range
Myhash_multimap c3(c1.begin(), c1.end());
for each (Myhash_multimap::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
Myhash_multimap c4(c1.begin(), c1.end(),
cliext::greater_equal<wchar_t>());
for each (Myhash_multimap::value_type elem in c4)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct with an iterator range and an ordering rule and hash function
Myhash_multimap c4h(c1.begin(), c1.end(),
cliext::greater_equal<wchar_t>(),
gcnew Myhash_multimap::hasher(&myfun));
for each (Myhash_multimap::value_type elem in c4h)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
System::Console::WriteLine();
// construct with an enumeration
Myhash_multimap c5( // NOTE: cast is not needed
(System::Collections::Generic::IEnumerable<
Myhash_multimap::value_type>^)%c3);
for each (Myhash_multimap::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
Myhash_multimap c6( // NOTE: cast is not needed
(System::Collections::Generic::IEnumerable<
Myhash_multimap::value_type>^)%c3,
cliext::greater_equal<wchar_t>());
for each (Myhash_multimap::value_type elem in c6)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct with an enumeration and an ordering rule and hash function
Myhash_multimap c6h( // NOTE: cast is not needed
(System::Collections::Generic::IEnumerable<
Myhash_multimap::value_type>^)%c3,
cliext::greater_equal<wchar_t>(),
gcnew Myhash_multimap::hasher(&myfun));
for each (Myhash_multimap::value_type elem in c6h)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
System::Console::WriteLine();
// construct by copying another container
Myhash_multimap c7(c4);
for each (Myhash_multimap::value_type elem in c7)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct by copying a container handle
Myhash_multimap c8(%c3);
for each (Myhash_multimap::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
[a 1] [b 2] [c 3]
size() = 0
[c 3] [b 2] [a 1]
[a 1] [b 2] [c 3]
[a 1] [b 2] [c 3]
[c 3] [b 2] [a 1]
[a 1] [b 2] [c 3]
[a 1] [b 2] [c 3]
[c 3] [b 2] [a 1]
[a 1] [b 2] [c 3]
[a 1] [b 2] [c 3]
hash_multimap::hasher
Délégué de hachage pour une clé.
Syntaxe
Microsoft::VisualC::StlClr::UnaryDelegate<GKey, int>
hasher;
Notes
Le type décrit un délégué qui convertit une valeur de clé en entier.
Exemple
// cliext_hash_multimap_hasher.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
Myhash_multimap::hasher^ myhash = c1.hash_delegate();
System::Console::WriteLine("hash(L'a') = {0}", myhash(L'a'));
System::Console::WriteLine("hash(L'b') = {0}", myhash(L'b'));
return (0);
}
hash(L'a') = 1616896120
hash(L'b') = 570892832
hash_multimap::insert
Ajoute des éléments.
Syntaxe
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);
Paramètres
first
Début de la plage à insérer.
last
Fin de la plage à insérer.
right
Énumération à insérer.
val
Valeur de clé à insérer.
where
Où dans le conteneur insérer (indicateur uniquement).
Notes
Chacune des fonctions membres insère une séquence spécifiée par les opérandes restants.
La première fonction membre insère un élément avec valeur val
et retourne un itérateur qui désigne l’élément nouvellement inséré. Vous l’utilisez pour insérer un seul élément.
La deuxième fonction membre insère un élément avec une valeur val
, en utilisant where
comme indicateur (pour améliorer les performances) et retourne un itérateur qui désigne l’élément nouvellement inséré. Vous l’utilisez pour insérer un élément unique qui peut être à côté d’un élément que vous connaissez.
La troisième fonction membre insère la séquence [first, last)
. Vous l’utilisez pour insérer zéro ou plusieurs éléments copiés à partir d’une autre séquence.
La quatrième fonction membre insère la séquence désignée par le right
. Vous l’utilisez pour insérer une séquence décrite par un énumérateur.
Chaque insertion d’élément prend du temps proportionnelle au logarithme du nombre d’éléments dans la séquence contrôlée. L’insertion peut se produire en temps constant amorti, toutefois, en fonction d’un indicateur qui désigne un élément en regard du point d’insertion.
Exemple
// cliext_hash_multimap_insert.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// insert a single value, unique and duplicate
Myhash_multimap::iterator it =
c1.insert(Myhash_multimap::make_value(L'x', 24));
System::Console::WriteLine("insert([L'x' 24]) = [{0} {1}]",
it->first, it->second);
it = c1.insert(Myhash_multimap::make_value(L'b', 2));
System::Console::WriteLine("insert([L'b' 2]) = [{0} {1}]",
it->first, it->second);
for each (Myhash_multimap::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(), Myhash_multimap::make_value(L'y', 25));
System::Console::WriteLine("insert(begin(), [L'y' 25]) = [{0} {1}]",
it->first, it->second);
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// insert an iterator range
Myhash_multimap c2;
it = c1.end();
c2.insert(c1.begin(), --it);
for each (Myhash_multimap::value_type elem in c2)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// insert an enumeration
Myhash_multimap c3;
c3.insert( // NOTE: cast is not needed
(System::Collections::Generic::
IEnumerable<Myhash_multimap::value_type>^)%c1);
for each (Myhash_multimap::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]
hash_multimap::iterator
Type d'un itérateur pour la séquence contrôlée.
Syntaxe
typedef T1 iterator;
Notes
Le type décrit un objet de type T1
non spécifié qui peut servir d’itérateur bidirectionnel pour la séquence contrôlée.
Exemple
// cliext_hash_multimap_iterator.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
Myhash_multimap::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]
hash_multimap::key_comp
Copie le délégué de classement pour deux clés.
Syntaxe
key_compare^key_comp();
Notes
La fonction membre retourne le délégué de classement utilisé pour commander la séquence contrôlée. Vous l’utilisez pour comparer deux clés.
Exemple
// cliext_hash_multimap_key_comp.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
Myhash_multimap::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
Myhash_multimap 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') = True
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
hash_multimap::key_compare
Délégué de classement pour deux clés.
Syntaxe
Microsoft::VisualC::StlClr::BinaryDelegate<GKey, GKey, bool>
key_compare;
Notes
Le type est un synonyme du délégué qui détermine l’ordre de ses arguments clés.
Exemple
// cliext_hash_multimap_key_compare.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
Myhash_multimap::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
Myhash_multimap 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') = True
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
hash_multimap::key_type
Type d'une clé de tri.
Syntaxe
typedef Key key_type;
Notes
Le type est un synonyme du paramètre de modèle Key
.
Exemple
// cliext_hash_multimap_key_type.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]" using key_type
for (Myhash_multimap::iterator it = c1.begin(); it != c1.end(); ++it)
{ // store element in key_type object
Myhash_multimap::key_type val = it->first;
System::Console::Write("{0} ", val);
}
System::Console::WriteLine();
return (0);
}
a b c
hash_multimap::load_factor
Compte le nombre moyen d'éléments par compartiment.
Syntaxe
float load_factor();
Notes
La fonction membre retourne (float)size() / bucket_count()
. Vous l’utilisez pour déterminer la taille moyenne du compartiment.
Exemple
// cliext_hash_multimap_load_factor.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1 = gcnew Myhash_multimap;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// inspect current parameters
System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
System::Console::WriteLine("max_load_factor() = {0}",
c1.max_load_factor());
System::Console::WriteLine();
// change max_load_factor and redisplay
c1.max_load_factor(0.25f);
System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
System::Console::WriteLine("max_load_factor() = {0}",
c1.max_load_factor());
System::Console::WriteLine();
// rehash and redisplay
c1.rehash(100);
System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
System::Console::WriteLine("max_load_factor() = {0}",
c1.max_load_factor());
return (0);
}
[a 1] [b 2] [c 3]
bucket_count() = 16
load_factor() = 0.1875
max_load_factor() = 4
bucket_count() = 16
load_factor() = 0.1875
max_load_factor() = 0.25
bucket_count() = 128
load_factor() = 0.0234375
max_load_factor() = 0.25
hash_multimap::lower_bound
Recherche le début de la plage qui correspond à une clé spécifiée.
Syntaxe
iterator lower_bound(key_type key);
Paramètres
key
Valeur de clé à rechercher.
Notes
La fonction membre détermine le premier élément X
de la séquence contrôlée qui hachage dans le même compartiment que key
et a un ordre équivalent à key
. Si aucun élément de ce type n’existe, il retourne hash_multimap::end
()
; sinon, il retourne un itérateur qui désigne X
. Vous l’utilisez pour localiser le début d’une séquence d’éléments actuellement dans la séquence contrôlée qui correspond à une clé spécifiée.
Exemple
// cliext_hash_multimap_lower_bound.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::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());
Myhash_multimap::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]
hash_multimap::make_value
Construit un objet valeur.
Syntaxe
static value_type make_value(key_type key, mapped_type mapped);
Paramètres
key
Valeur de clé à utiliser.
mapped
Valeur mappée à rechercher.
Notes
La fonction membre retourne un value_type
objet dont la clé est key
et dont la valeur mappée est mapped
. Vous l’utilisez pour composer un objet adapté à une utilisation avec plusieurs autres fonctions membres.
Exemple
// cliext_hash_multimap_make_value.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::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]
hash_multimap::mapped_type
Type d'une valeur mappée associée à chaque clé.
Syntaxe
typedef Mapped mapped_type;
Notes
Le type est un synonyme du paramètre de modèle Mapped
.
Exemple
// cliext_hash_multimap_mapped_type.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]" using mapped_type
for (Myhash_multimap::iterator it = c1.begin(); it != c1.end(); ++it)
{ // store element in mapped_type object
Myhash_multimap::mapped_type val = it->second;
System::Console::Write("{0} ", val);
}
System::Console::WriteLine();
return (0);
}
1 2 3
hash_multimap::max_load_factor
Obtient ou définit le nombre maximal d’éléments par compartiment.
Syntaxe
float max_load_factor();
void max_load_factor(float new_factor);
Paramètres
new_factor
Nouveau facteur de charge maximal à stocker.
Notes
La première fonction membre retourne le facteur de charge maximal stocké actuel. Vous l’utilisez pour déterminer la taille moyenne maximale du compartiment.
La deuxième fonction membre remplace le facteur de charge maximal du magasin par new_factor
. Aucun réachage automatique n’a lieu tant qu’une insertion ultérieure n’a pas lieu.
Exemple
// cliext_hash_multimap_max_load_factor.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1 = gcnew Myhash_multimap;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// inspect current parameters
System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
System::Console::WriteLine("max_load_factor() = {0}",
c1.max_load_factor());
System::Console::WriteLine();
// change max_load_factor and redisplay
c1.max_load_factor(0.25f);
System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
System::Console::WriteLine("max_load_factor() = {0}",
c1.max_load_factor());
System::Console::WriteLine();
// rehash and redisplay
c1.rehash(100);
System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
System::Console::WriteLine("max_load_factor() = {0}",
c1.max_load_factor());
return (0);
}
[a 1] [b 2] [c 3]
bucket_count() = 16
load_factor() = 0.1875
max_load_factor() = 4
bucket_count() = 16
load_factor() = 0.1875
max_load_factor() = 0.25
bucket_count() = 128
load_factor() = 0.0234375
max_load_factor() = 0.25
hash_multimap::operator=
Remplace la séquence contrôlée.
Syntaxe
hash_multimap<Key, Mapped>% operator=(hash_multimap<Key, Mapped>% right);
Paramètres
right
Conteneur à copier.
Notes
L’opérateur membre copie right
dans l’objet, puis retourne *this
. Vous l’utilisez pour remplacer la séquence contrôlée par une copie de la séquence contrôlée dans right
.
Exemple
// cliext_hash_multimap_operator_as.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// assign to a new container
Myhash_multimap c2;
c2 = c1;
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::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]
hash_multimap::rbegin
Désigne le début de la séquence contrôlée inverse.
Syntaxe
reverse_iterator rbegin();
Notes
La fonction membre retourne un itérateur inverse qui désigne le dernier élément de la séquence contrôlée, ou juste au-delà du début d’une séquence vide. Par conséquent, il désigne la beginning
séquence inverse. Vous l’utilisez pour obtenir un itérateur qui désigne le current
début de la séquence contrôlée vue dans l’ordre inverse, mais son état peut changer si la longueur de la séquence contrôlée change.
Exemple
// cliext_hash_multimap_rbegin.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// inspect first two items in reversed sequence
Myhash_multimap::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]
hash_multimap::reference
Type d'une référence à un élément.
Syntaxe
typedef value_type% reference;
Notes
Le type décrit une référence à un élément.
Exemple
// cliext_hash_multimap_reference.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
Myhash_multimap::iterator it = c1.begin();
for (; it != c1.end(); ++it)
{ // get a reference to an element
Myhash_multimap::reference ref = *it;
System::Console::Write("[{0} {1}] ", ref->first, ref->second);
}
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]
hash_multimap::rehash
Régénère la table de hachage.
Syntaxe
void rehash();
Notes
La fonction membre reconstruit la table de hachage, en veillant à ce que load_factor() <= max_load_factor()
. Sinon, la table de hachage augmente uniquement si nécessaire après une insertion. (Il ne diminue jamais automatiquement la taille.) Vous l’utilisez pour ajuster la taille de la table de hachage.
Exemple
// cliext_hash_multimap_rehash.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1 = gcnew Myhash_multimap;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// inspect current parameters
System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
System::Console::WriteLine("max_load_factor() = {0}",
c1.max_load_factor());
System::Console::WriteLine();
// change max_load_factor and redisplay
c1.max_load_factor(0.25f);
System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
System::Console::WriteLine("max_load_factor() = {0}",
c1.max_load_factor());
System::Console::WriteLine();
// rehash and redisplay
c1.rehash(100);
System::Console::WriteLine("bucket_count() = {0}", c1.bucket_count());
System::Console::WriteLine("load_factor() = {0}", c1.load_factor());
System::Console::WriteLine("max_load_factor() = {0}",
c1.max_load_factor());
return (0);
}
[a 1] [b 2] [c 3]
bucket_count() = 16
load_factor() = 0.1875
max_load_factor() = 4
bucket_count() = 16
load_factor() = 0.1875
max_load_factor() = 0.25
bucket_count() = 128
load_factor() = 0.0234375
max_load_factor() = 0.25
hash_multimap::rend
Désigne la fin de la séquence contrôlée inverse.
Syntaxe
reverse_iterator rend();
Notes
La fonction membre retourne un itérateur inverse qui pointe juste au-delà du début de la séquence contrôlée. Par conséquent, il désigne la end
séquence inverse. Vous l’utilisez pour obtenir un itérateur qui désigne la current
fin de la séquence contrôlée vue dans l’ordre inverse, mais son état peut changer si la longueur de la séquence contrôlée change.
Exemple
// cliext_hash_multimap_rend.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// inspect first two items in reversed sequence
Myhash_multimap::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]
hash_multimap::reverse_iterator
Type d'un itérateur inverse pour la séquence contrôlée.
Syntaxe
typedef T3 reverse_iterator;
Notes
Le type décrit un objet de type T3
non spécifié qui peut servir d’itérateur inverse pour la séquence contrôlée.
Exemple
// cliext_hash_multimap_reverse_iterator.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]" reversed
Myhash_multimap::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]
hash_multimap::size
Compte le nombre d'éléments.
Syntaxe
size_type size();
Notes
La fonction membre retourne la longueur de la séquence contrôlée. Vous l’utilisez pour déterminer le nombre d’éléments actuellement dans la séquence contrôlée. Si tout ce dont vous vous souciez est de savoir si la séquence a une taille différente de zéro, voir hash_multimap::empty
()
.
Exemple
// cliext_hash_multimap_size.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::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(Myhash_multimap::make_value(L'd', 4));
c1.insert(Myhash_multimap::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
hash_multimap::size_type
Type d'une distance signée entre deux éléments.
Syntaxe
typedef int size_type;
Notes
Le type décrit un nombre d’éléments non négatifs.
Exemple
// cliext_hash_multimap_size_type.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// compute positive difference
Myhash_multimap::size_type diff = 0;
for (Myhash_multimap::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
hash_multimap::swap
Échange le contenu de deux conteneurs.
Syntaxe
void swap(hash_multimap<Key, Mapped>% right);
Paramètres
right
Conteneur avec lequel échanger le contenu.
Notes
La fonction membre échange les séquences contrôlées entre this
et right
. Il le fait en temps constant et ne lève aucune exception. Vous l’utilisez comme moyen rapide d’échanger le contenu de deux conteneurs.
Exemple
// cliext_hash_multimap_swap.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// construct another container with repetition of values
Myhash_multimap c2;
c2.insert(Myhash_multimap::make_value(L'd', 4));
c2.insert(Myhash_multimap::make_value(L'e', 5));
c2.insert(Myhash_multimap::make_value(L'f', 6));
for each (Myhash_multimap::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 (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
for each (Myhash_multimap::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]
hash_multimap::to_array
Copie la séquence contrôlée dans un nouveau tableau.
Syntaxe
cli::array<value_type>^ to_array();
Notes
La fonction membre retourne un tableau contenant la séquence contrôlée. Vous l’utilisez pour obtenir une copie de la séquence contrôlée sous forme de tableau.
Exemple
// cliext_hash_multimap_to_array.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// copy the container and modify it
cli::array<Myhash_multimap::value_type>^ a1 = c1.to_array();
c1.insert(Myhash_multimap::make_value(L'd', 4));
for each (Myhash_multimap::value_type elem in c1)
System::Console::Write("[{0} {1}] ", elem->first, elem->second);
System::Console::WriteLine();
// display the earlier array copy
for each (Myhash_multimap::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]
hash_multimap::upper_bound
Recherche la fin de la plage qui correspond à une clé spécifiée.
Syntaxe
iterator upper_bound(key_type key);
Paramètres
key
Valeur de clé à rechercher.
Notes
La fonction membre détermine le dernier élément X
de la séquence contrôlée qui hachage dans le même compartiment que key
et a un ordre équivalent à key
. S’il n’existe aucun élément de ce type ou s’il X
s’agit du dernier élément de la séquence contrôlée, il retourne hash_multimap::end
()
; sinon, il retourne un itérateur qui désigne le premier élément au-delà X
de . Vous l’utilisez pour localiser la fin d’une séquence d’éléments actuellement dans la séquence contrôlée qui correspond à une clé spécifiée.
Exemple
// cliext_hash_multimap_upper_bound.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]"
for each (Myhash_multimap::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());
Myhash_multimap::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]
hash_multimap::value_comp
Copie le délégué de classement pour deux valeurs d’élément.
Syntaxe
value_compare^ value_comp();
Notes
La fonction membre retourne le délégué de classement utilisé pour commander la séquence contrôlée. Vous l’utilisez pour comparer deux valeurs d’élément.
Exemple
// cliext_hash_multimap_value_comp.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_map<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
Myhash_multimap::value_compare^ kcomp = c1.value_comp();
System::Console::WriteLine("compare([L'a', 1], [L'a', 1]) = {0}",
kcomp(Myhash_multimap::make_value(L'a', 1),
Myhash_multimap::make_value(L'a', 1)));
System::Console::WriteLine("compare([L'a', 1], [L'b', 2]) = {0}",
kcomp(Myhash_multimap::make_value(L'a', 1),
Myhash_multimap::make_value(L'b', 2)));
System::Console::WriteLine("compare([L'b', 2], [L'a', 1]) = {0}",
kcomp(Myhash_multimap::make_value(L'b', 2),
Myhash_multimap::make_value(L'a', 1)));
System::Console::WriteLine();
return (0);
}
compare([L'a', 1], [L'a', 1]) = True
compare([L'a', 1], [L'b', 2]) = True
compare([L'b', 2], [L'a', 1]) = False
hash_multimap::value_compare
Délégué de classement pour deux valeurs d’élément.
Syntaxe
Microsoft::VisualC::StlClr::BinaryDelegate<generic_value, generic_value, bool>
value_compare;
Notes
Le type est un synonyme du délégué qui détermine l’ordre de ses arguments de valeur.
Exemple
// cliext_hash_multimap_value_compare.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_map<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
Myhash_multimap::value_compare^ kcomp = c1.value_comp();
System::Console::WriteLine("compare([L'a', 1], [L'a', 1]) = {0}",
kcomp(Myhash_multimap::make_value(L'a', 1),
Myhash_multimap::make_value(L'a', 1)));
System::Console::WriteLine("compare([L'a', 1], [L'b', 2]) = {0}",
kcomp(Myhash_multimap::make_value(L'a', 1),
Myhash_multimap::make_value(L'b', 2)));
System::Console::WriteLine("compare([L'b', 2], [L'a', 1]) = {0}",
kcomp(Myhash_multimap::make_value(L'b', 2),
Myhash_multimap::make_value(L'a', 1)));
System::Console::WriteLine();
return (0);
}
compare([L'a', 1], [L'a', 1]) = True
compare([L'a', 1], [L'b', 2]) = True
compare([L'b', 2], [L'a', 1]) = False
hash_multimap::value_type
Type d’un élément.
Syntaxe
typedef generic_value value_type;
Notes
Le type est un synonyme de generic_value
.
Exemple
// cliext_hash_multimap_value_type.cpp
// compile with: /clr
#include <cliext/hash_map>
typedef cliext::hash_multimap<wchar_t, int> Myhash_multimap;
int main()
{
Myhash_multimap c1;
c1.insert(Myhash_multimap::make_value(L'a', 1));
c1.insert(Myhash_multimap::make_value(L'b', 2));
c1.insert(Myhash_multimap::make_value(L'c', 3));
// display contents " [a 1] [b 2] [c 3]" using value_type
for (Myhash_multimap::iterator it = c1.begin(); it != c1.end(); ++it)
{ // store element in value_type object
Myhash_multimap::value_type val = *it;
System::Console::Write("[{0} {1}] ", val->first, val->second);
}
System::Console::WriteLine();
return (0);
}
[a 1] [b 2] [c 3]