Aracılığıyla paylaş


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 idbenzersiz 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 CharTypeiç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 CharTypekarşı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_hashbakı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::comparegeç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_typeiliş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