Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een klassesjabloon die een object beschrijft dat kan fungeren als een facet voor landinstellingen om de volgorde en groepering van tekens binnen een tekenreeks te bepalen, vergelijkingen tussen deze objecten en de hashing van tekenreeksen.
Syntaxis
template <class CharType>
class collate : public locale::facet;
Parameterwaarden
CharType
Het type dat in een programma wordt gebruikt om tekens te coderen.
Opmerkingen
Net als bij een facet van de landinstelling heeft de statische object-id een initiële opgeslagen waarde van nul. De eerste poging om toegang te krijgen tot de opgeslagen waarde slaat een unieke positieve waarde op in id. In sommige talen worden tekens gegroepeerd en behandeld als één teken, en in andere talen worden afzonderlijke tekens behandeld alsof ze twee tekens zijn. De samenvouwservices die worden geleverd door de collateklasse bieden de manier om deze gevallen te sorteren.
Constructeurs
| Constructeur | Beschrijving |
|---|---|
| sorteren | De constructor voor objecten van klasse collate die fungeert als een facet voor het afhandelen van tekenreekssorteringsconventies. |
Typedefs
| Typenaam | Beschrijving |
|---|---|
| char_type | Een type dat een teken van het type CharTypebeschrijft. |
| string_type | Een type dat een tekenreeks basic_string beschrijft die tekens van het type bevat CharType. |
Functies voor leden
| Lid, functie | Beschrijving |
|---|---|
| vergelijken | Vergelijkt twee tekenreeksen op basis van hun facetspecifieke regels voor gelijkheid of ongelijkheid. |
| do_compare | Een virtuele functie die wordt aangeroepen om twee tekenreeksen te vergelijken op basis van hun facetspecifieke regels voor gelijkheid of ongelijkheid. |
| do_hash | Een virtuele functie die wordt aangeroepen om de hashwaarde van reeksen te bepalen volgens de facetspecifieke regels. |
| do_transform | Een virtuele functie die wordt aangeroepen om een tekenreeks van een landinstelling te converteren naar een tekenreeks die kan worden gebruikt in lexicografische vergelijkingen met andere tekenreeksen die op dezelfde manier worden geconverteerd vanuit dezelfde landinstelling. |
| hekje | Bepaalt de hash-waarde van de reeks volgens de facetspecifieke regels. |
| transformeren | Converteert een tekenreeks van een landinstelling naar een tekenreeks die kan worden gebruikt in lexicografische vergelijkingen met andere tekenreeksen die op dezelfde manier worden geconverteerd vanuit dezelfde landinstelling. |
Behoeften
Rubriek:<oord>
naamruimte: std
collate::char_type
Een type dat een teken van het type CharTypebeschrijft.
typedef CharType char_type;
Opmerkingen
Het type is een synoniem voor de sjabloonparameter CharType.
collate::collate
De constructor voor objecten van klasse-collate die fungeert als een landinstelling facet voor het verwerken van tekenreekssorteringsconventies.
public:
explicit collate(
size_t _Refs = 0);
protected:
collate(
const char* _Locname,
size_t _Refs = 0);
Parameterwaarden
_Refs
Een geheel getal dat wordt gebruikt om het type geheugenbeheer voor het object op te geven.
_Locname
De naam van de landinstelling.
Opmerkingen
De mogelijke waarden voor de parameter _Refs en hun significantie zijn:
0: De levensduur van het object wordt beheerd door de landinstellingen die het object bevatten.
1: De levensduur van het object moet handmatig worden beheerd.
> 1: Deze waarden zijn niet gedefinieerd.
De constructor initialiseert het basisobject met landinstelling::facet(_Refs).
collate::compare
Vergelijkt twee tekenreeksen op basis van hun facetspecifieke regels voor gelijkheid of ongelijkheid.
int compare(const CharType* first1,
const CharType* last1,
const CharType* first2,
const CharType* last2) const;
Parameterwaarden
eerste1
Wijs het eerste element in de eerste volgorde aan dat moet worden vergeleken.
laatste
Wijs het laatste element in de eerste volgorde aan dat moet worden vergeleken.
eerste2
Wijs het eerste element in de tweede volgorde aan dat moet worden vergeleken.
last2
Wijs het laatste element in de tweede volgorde aan dat moet worden vergeleken.
Retourwaarde
De lidfunctie retourneert:
-1 als de eerste reeks kleiner is dan de tweede reeks.
+1 als de tweede reeks kleiner is dan de eerste reeks.
0 als de reeksen gelijkwaardig zijn.
Opmerkingen
De eerste reeks vergelijkt minder als het kleinere element in het vroegste ongelijke paar in de reeksen staat of, als er geen ongelijke paren bestaan, maar de eerste reeks korter is.
De lidfunctie retourneert do_compare(first1, last1, first2, ). last2
Voorbeeld
// collate_compare.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <tchar.h>
using namespace std;
int main() {
locale loc ( "German_germany" );
_TCHAR * s1 = _T("Das ist wei\x00dfzz."); // \x00df is the German sharp-s, it comes before z in the German alphabet
_TCHAR * s2 = _T("Das ist weizzz.");
int result1 = use_facet<collate<_TCHAR> > ( loc ).
compare ( s1, &s1[_tcslen( s1 )-1 ], s2, &s2[_tcslen( s2 )-1 ] );
cout << result1 << endl;
locale loc2 ( "C" );
int result2 = use_facet<collate<_TCHAR> > ( loc2 ).
compare (s1, &s1[_tcslen( s1 )-1 ], s2, &s2[_tcslen( s2 )-1 ] );
cout << result2 << endl;
}
collate::d o_compare
Een virtuele functie die wordt aangeroepen om twee tekenreeksen te vergelijken op basis van hun facetspecifieke regels voor gelijkheid of ongelijkheid.
virtual int do_compare(const CharType* first1,
const CharType* last1,
const CharType* first2,
const CharType* last2) const;
Parameterwaarden
eerste1
Wijs het eerste element in de eerste volgorde aan dat moet worden vergeleken.
laatste
Wijs het laatste element in de eerste volgorde aan dat moet worden vergeleken.
eerste2
Wijs het eerste element in de tweede volgorde aan dat moet worden vergeleken.
last2
Wijs het laatste element in de tweede volgorde aan dat moet worden vergeleken.
Retourwaarde
De lidfunctie retourneert:
-1 als de eerste reeks kleiner is dan de tweede reeks.
+1 als de tweede reeks kleiner is dan de eerste reeks.
0 als de reeksen gelijkwaardig zijn.
Opmerkingen
De beveiligde virtuele lidfunctie vergelijkt de reeks op [ * first1, Last1)* met de reeks op [ eerste2, laatste2). Hiermee worden waarden vergeleken door tussen paren van overeenkomende elementen van het type operator<toe te passenCharType. De eerste reeks vergelijkt minder als het kleinere element in het vroegste ongelijke paar in de reeksen bestaat of als er geen ongelijke paren bestaan, maar de eerste reeks korter is.
Voorbeeld
Zie het voorbeeld voor het sorteren::vergelijken, die aanroepen do_compare.
collate::d o_hash
Een virtuele functie die wordt aangeroepen om de hashwaarde van reeksen te bepalen volgens de facetspecifieke regels.
virtual long do_hash(const CharType* first, const CharType* last) const;
Parameterwaarden
eerste
Een aanwijzer naar het eerste teken in de reeks waarvan de waarde moet worden bepaald.
laatste
Een aanwijzer naar het laatste teken in de reeks waarvan de waarde moet worden bepaald.
Retourwaarde
Een hash-waarde van het type long voor de reeks.
Opmerkingen
Een hash-waarde kan bijvoorbeeld handig zijn bij het distribueren van reeksen pseudo-willekeurig over een matrix met lijsten.
Voorbeeld
Zie het voorbeeld voor hash, die aanroept do_hash.
collate::d o_transform
Een virtuele functie die wordt aangeroepen om een tekenreeks van een landinstelling te converteren naar een tekenreeks die kan worden gebruikt in lexicografische vergelijkingen met andere tekenreeksen die op dezelfde manier worden geconverteerd vanuit dezelfde landinstelling.
virtual string_type do_transform(const CharType* first, const CharType* last) const;
Parameterwaarden
eerste
Een aanwijzer naar het eerste teken in de reeks die moet worden geconverteerd.
laatste
Een aanwijzer naar het laatste teken in de reeks dat moet worden geconverteerd.
Retourwaarde
Een tekenreeks die de getransformeerde tekenreeks is.
Opmerkingen
De beveiligde functie virtueel lid retourneert een object van klasse string_type waarvan de gecontroleerde reeks een kopie is van de reeks [ first, last). Als een klasse die is afgeleid van het verzamelen< vanCharType-onderdrukkingen>do_compare, moet deze ook worden overschreven do_transform om overeen te komen. Wanneer deze worden doorgegeven aan collate::compare, moeten twee getransformeerde tekenreeksen hetzelfde resultaat opleveren dat u krijgt van het doorgeven van de niet-getransformeerde tekenreeksen om te vergelijken in de afgeleide klasse.
Voorbeeld
Zie het voorbeeld voor transformatie, die aanroept do_transform.
collate::hash
Bepaalt de hash-waarde van de reeks volgens de facetspecifieke regels.
long hash(const CharType* first, const CharType* last) const;
Parameterwaarden
eerste
Een aanwijzer naar het eerste teken in de reeks waarvan de waarde moet worden bepaald.
laatste
Een aanwijzer naar het laatste teken in de reeks waarvan de waarde moet worden bepaald.
Retourwaarde
Een hash-waarde van het type long voor de reeks.
Opmerkingen
De lidfunctie retourneert do_hash(first, last).
Een hash-waarde kan bijvoorbeeld handig zijn bij het distribueren van reeksen pseudo-willekeurig over een matrix met lijsten.
Voorbeeld
// collate_hash.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <tchar.h>
using namespace std;
int main( )
{
locale loc ( "German_germany" );
_TCHAR * s1 = _T("\x00dfzz abc."); // \x00df is the German sharp-s (looks like beta), it comes before z in the alphabet
_TCHAR * s2 = _T("zzz abc."); // \x00df is the German sharp-s (looks like beta), it comes before z in the alphabet
long r1 = use_facet< collate<_TCHAR> > ( loc ).
hash (s1, &s1[_tcslen( s1 )-1 ]);
long r2 = use_facet< collate<_TCHAR> > ( loc ).
hash (s2, &s2[_tcslen( s2 )-1 ] );
cout << r1 << " " << r2 << endl;
}
541187293 551279837
collate::string_type
Een type dat een tekenreeks basic_string beschrijft die tekens van het type bevat CharType.
typedef basic_string<CharType> string_type;
Opmerkingen
Het type beschrijft een specialisatie van klassesjabloon basic_string waarvan objecten kopieën van de bronvolgorde kunnen opslaan.
Voorbeeld
Zie string_type voor een voorbeeld van hoe u declareert en gebruikt.
collate::transform
Converteert een tekenreeks van een landinstelling naar een tekenreeks die kan worden gebruikt in lexicografische vergelijkingen met andere tekenreeksen die op dezelfde manier worden geconverteerd vanuit dezelfde landinstelling.
string_type transform(const CharType* first, const CharType* last) const;
Parameterwaarden
eerste
Een aanwijzer naar het eerste teken in de reeks die moet worden geconverteerd.
laatste
Een aanwijzer naar het laatste teken in de reeks dat moet worden geconverteerd.
Retourwaarde
Een tekenreeks die de getransformeerde tekenreeks bevat.
Opmerkingen
De lidfunctie retourneert do_transform(first, last).
Voorbeeld
// collate_transform.cpp
// compile with: /EHsc
#include <locale>
#include <iostream>
#include <tchar.h>
using namespace std;
int main( )
{
locale loc ( "German_Germany" );
_TCHAR* s1 = _T("\x00dfzz abc.");
// \x00df is the German sharp-s (looks like beta),
// it comes before z in the alphabet
_TCHAR* s2 = _T("zzz abc.");
collate<_TCHAR>::string_type r1; // OK for typedef
r1 = use_facet< collate<_TCHAR> > ( loc ).
transform (s1, &s1[_tcslen( s1 )-1 ]);
cout << r1 << endl;
basic_string<_TCHAR> r2 = use_facet< collate<_TCHAR> > ( loc ).
transform (s2, &s2[_tcslen( s2 )-1 ]);
cout << r2 << endl;
int result1 = use_facet<collate<_TCHAR> > ( loc ).compare
(s1, &s1[_tcslen( s1 )-1 ], s2, &s2[_tcslen( s2 )-1 ] );
cout << _tcscmp(r1.c_str( ),r2.c_str( )) << result1
<< _tcscmp(s1,s2) <<endl;
}
-1-11