collate Sınıfı
Bir dizedeki karakterlerin sırasını ve gruplandırmalarını, aralarındaki karşılaştırmaları ve dizelerin karmalarını denetlemek için yerel ayar model olarak hizmet verebilen bir nesneyi açıklayan bir sınıf şablonu.
Sözdizimi
template <class CharType>
class collate : public locale::facet;
Parametreler
CharType
Bir program içindeki karakterleri kodlamak için kullanılan tür.
Açıklamalar
Herhangi bir yerel ayar modelinde olduğu gibi, statik nesne kimliğinde depolanmış bir başlangıç sıfır değeri bulunur. Depolanan değerine erişmeye yönelik ilk girişim, içinde id
benzersiz bir pozitif değer depolar. Bazı dillerde, karakterler gruplandırılır ve tek bir karakter olarak ele alınır ve bazılarındaysa tekil karakterler iki karaktermiş gibi ele alınır. Harmanlama sınıfı tarafından sağlanan harmanlama hizmetleri bu durumları sıralamaya yönelik yöntem sağlar.
Oluşturucular
Oluşturucu | Açıklama |
---|---|
harmanlamak | Dize sıralama kurallarını işlemek için bir yerel ayar model olarak hizmet veren sınıfın collate nesneleri için oluşturucu. |
Tür tanımları
Tür adı | Açıklama |
---|---|
char_type | türünde bir karakteri açıklayan bir tür CharType . |
string_type | türünde karakterler içeren bir tür basic_string dizesini açıklayan tür CharType . |
Üye işlevleri
Üye işlevi | Açıklama |
---|---|
karşılaştırmak | Eşitlik ve eşitsizlik için kendi modeline özgü kurallara göre iki karakterli dizileri karşılaştırır. |
do_compare | Eşitlik ve eşitsizlik için kendi modeline özgü kurallara göre iki karakterli dizileri karşılaştırmak için çağrılan sanal işlev. |
do_hash | Kendi modeline özgü kurallara göre dizilerin karma değerini belirlemek için çağrılan sanal işlev. |
do_transform | Yerel ayarındaki karakter dizisini lexicographical karşılaştırmasına benzer şekilde aynı yerel ayardan dönüştürülen diğer karakter dizileri ile kullanılabilecek bir dize dönüştürmek için çağrılan bir sanal işlev. |
Karma | Kendi modeline özgü kurallara göre dizilerin karma değerini belirler. |
dönüştürmek | Yerel ayarındaki karakter dizisini lexicographical karşılaştırmasına benzer şekilde aynı yerel ayardan dönüştürülen diğer karakter dizileri ile kullanılabilecek bir dize dönüştürür. |
Gereksinimler
Üst bilgi:<yerel ayar>
Ad alanı: std
collate::char_type
türünde bir karakteri açıklayan bir tür CharType
.
typedef CharType char_type;
Açıklamalar
türü, şablon parametresi CharType
için bir eş anlamlıdır.
collate::collate
Sınıf nesnelerinin oluşturucu, dize sıralama kurallarını işlemek için bir yerel ayar model olarak hizmet veren harmanlama.
public:
explicit collate(
size_t _Refs = 0);
protected:
collate(
const char* _Locname,
size_t _Refs = 0);
Parametreler
_Refs
Nesne için bellek yönetimi türünü belirtmek için kullanılan tamsayı değeri.
_Locname
Yerel ayarın adı.
Açıklamalar
_Refs parametresinin olası değerleri ve anlamları şunlardır:
0: Nesnenin yaşam süresi, nesnenin bulunduğu yerel ayarlar tarafından yönetilir.
1: Nesnenin ömrü el ile yönetilmelidir.
> 1: Bu değerler tanımlanmamıştır.
Oluşturucu, temel nesnesini locale::facet()_Refs
ile başlatır.
collate::compare
Eşitlik ve eşitsizlik için kendi modeline özgü kurallara göre iki karakterli dizileri karşılaştırır.
int compare(const CharType* first1,
const CharType* last1,
const CharType* first2,
const CharType* last2) const;
Parametreler
ilk1
Karşılaştırılacak ilk dizideki ilk öğenin işaretçisi.
son1
Karşılaştırılacak ilk dizideki son öğeye ilişkin işaretçi.
ilk2
Karşılaştırılacak ikinci dizideki ilk öğeye işaret eden işaretçi.
son2
Karşılaştırılacak ikinci dizideki son öğeye ilişkin işaretçi.
Dönüş Değeri
Üye işlevi şunu döndürür:
İlk sıra ikinci diziden küçükse -1.
İkinci sıra ilk diziden daha azını karşılaştırıyorsa +1.
Diziler eşdeğerse 0.
Açıklamalar
İlk dizi, dizilerdeki en erken eşit olmayan çiftte küçük öğeye sahipse veya eşit olmayan çift yoksa, ancak ilk dizi daha kısaysa daha azını karşılaştırır.
Üye işlevi do_compare( first1
, last1
, first2
, last2
) döndürür.
Örnek
// 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
Eşitlik ve eşitsizlik için kendi modeline özgü kurallara göre iki karakterli dizileri karşılaştırmak için çağrılan sanal işlev.
virtual int do_compare(const CharType* first1,
const CharType* last1,
const CharType* first2,
const CharType* last2) const;
Parametreler
ilk1
Karşılaştırılacak ilk dizideki ilk öğenin işaretçisi.
son1
Karşılaştırılacak ilk dizideki son öğeye ilişkin işaretçi.
ilk2
Karşılaştırılacak ikinci dizideki ilk öğeye işaret eden işaretçi.
son2
Karşılaştırılacak ikinci dizideki son öğeye ilişkin işaretçi.
Dönüş Değeri
Üye işlevi şunu döndürür:
İlk sıra ikinci diziden küçükse -1.
İkinci sıra ilk diziden daha azını karşılaştırıyorsa +1.
Diziler eşdeğerse 0.
Açıklamalar
Korumalı sanal üye işlevi [ * first1, Last1)* konumundaki sırayı [ first2, last2) dizisiyle karşılaştırır. Türüne CharType
karşılık gelen öğe çiftleri arasında uygulayarak operator<
değerleri karşılaştırır. İlk dizi, dizilerdeki en erken eşit olmayan çiftte daha küçük öğeye sahipse veya eşit olmayan çift yoksa ancak ilk dizi daha kısaysa daha azını karşılaştırır.
Örnek
Collate::compare örneğine bakın.do_compare
collate::d o_hash
Kendi modeline özgü kurallara göre dizilerin karma değerini belirlemek için çağrılan sanal işlev.
virtual long do_hash(const CharType* first, const CharType* last) const;
Parametreler
birinci
Değeri belirlenecek olan dizideki ilk karakterin işaretçisi.
son
Değeri belirlenecek olan dizideki son karakterin işaretçisi.
Dönüş Değeri
Dizi için tür long
karma değeri.
Açıklamalar
Karma değer, örneğin dizileri bir liste dizisi arasında rastgele dağıtmada yararlı olabilir.
Örnek
Adlı karma örneğine do_hash
bakın.
collate::d o_transform
Yerel ayarındaki karakter dizisini lexicographical karşılaştırmasına benzer şekilde aynı yerel ayardan dönüştürülen diğer karakter dizileri ile kullanılabilecek bir dize dönüştürmek için çağrılan bir sanal işlev.
virtual string_type do_transform(const CharType* first, const CharType* last) const;
Parametreler
birinci
Dönüştürülecek dizideki ilk karakterin işaretçisi.
son
Dönüştürülecek dizideki son karakterin işaretçisi.
Dönüş Değeri
Dönüştürülmüş karakter dizisi olan bir dize.
Açıklamalar
Korumalı sanal üye işlevi, denetimli dizisi [ first
, last
) dizisinin bir kopyası olan sınıf string_type nesnesini döndürür. CharType'ın harmanlamasından<türetilen bir sınıf do_compare geçersiz kılarsa, aynı zamanda eşleşecek şekilde geçersiz kılmalıdırdo_transform
.> öğesine collate::compare
geçirildiğinde, dönüştürülen iki dize, türetilmiş sınıfta karşılaştırmak üzere dönüştürülmemiş dizeleri geçirmekten elde edeceğiniz sonucu vermelidir.
Örnek
Dönüştürme örneğine bakın ve öğesini çağırırdo_transform
.
collate::hash
Kendi modeline özgü kurallara göre dizilerin karma değerini belirler.
long hash(const CharType* first, const CharType* last) const;
Parametreler
birinci
Değeri belirlenecek olan dizideki ilk karakterin işaretçisi.
son
Değeri belirlenecek olan dizideki son karakterin işaretçisi.
Dönüş Değeri
Dizi için tür long
karma değeri.
Açıklamalar
Üye işlevi do_hash( first
, last
) döndürür.
Karma değer, örneğin dizileri bir liste dizisi arasında rastgele dağıtmada yararlı olabilir.
Örnek
// 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
türünde karakterler içeren bir tür basic_string
dizesini açıklayan tür CharType
.
typedef basic_string<CharType> string_type;
Açıklamalar
türü, nesneleri kaynak dizinin kopyalarını depolayan sınıf şablonu basic_string bir özelleştirmeyi açıklar.
Örnek
nasıl bildirilip kullanılacağına string_type
ilişkin bir örnek için bkz . dönüştürme.
collate::transform
Yerel ayarındaki karakter dizisini lexicographical karşılaştırmasına benzer şekilde aynı yerel ayardan dönüştürülen diğer karakter dizileri ile kullanılabilecek bir dize dönüştürür.
string_type transform(const CharType* first, const CharType* last) const;
Parametreler
birinci
Dönüştürülecek dizideki ilk karakterin işaretçisi.
son
Dönüştürülecek dizideki son karakterin işaretçisi.
Dönüş Değeri
Dönüştürülmüş karakter dizisini içeren bir dize.
Açıklamalar
Üye işlevi do_transform(first
, last
) döndürür.
Örnek
// 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
Ayrıca bkz.
<yerel ayar>
C++ Standart Kitaplığında İş Parçacığı Güvenliği