Files
cppdraft_translate/cppdraft/locale/collate/virtuals.md
2025-10-25 03:02:53 +03:00

70 lines
2.6 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

[locale.collate.virtuals]
# 28 Text processing library [[text]](./#text)
## 28.3 Localization library [[localization]](localization#locale.collate.virtuals)
### 28.3.4 Standard locale categories [[locale.categories]](locale.categories#locale.collate.virtuals)
#### 28.3.4.5 The collate category [[category.collate]](category.collate#locale.collate.virtuals)
#### 28.3.4.5.1 Class template collate [[locale.collate]](locale.collate#virtuals)
#### 28.3.4.5.1.3 Virtual functions [locale.collate.virtuals]
[🔗](#lib:collate,do_compare)
`int do_compare(const charT* low1, const charT* high1,
const charT* low2, const charT* high2) const;
`
[1](#1)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/text.tex#L3442)
*Returns*: 1 if the first string is greater than the second,-1 if less,
zero otherwise[.](#1.sentence-1)
The specializations
required in Table [91](locale.category#tab:locale.category.facets "Table 91: Locale category facets") ([[locale.category]](locale.category "28.3.3.1.2.1Type locale::category")),
namely collate<char> and collate<wchar_t>,
implement a lexicographical comparison ([[alg.lex.comparison]](alg.lex.comparison "26.8.11Lexicographical comparison"))[.](#1.sentence-2)
[🔗](#lib:collate,do_transform)
`string_type do_transform(const charT* low, const charT* high) const;
`
[2](#2)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/text.tex#L3459)
*Returns*: A basic_string<charT> value that,
compared lexicographically with
the result of calling transform() on another string,
yields the same result as calling do_compare() on the same two strings[.](#2.sentence-1)[226](#footnote-226 "This function is useful when one string is being compared to many other strings.")
[🔗](#lib:collate,do_hash)
`long do_hash(const charT* low, const charT* high) const;
`
[3](#3)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/text.tex#L3476)
*Returns*: An integer value equal to the result of calling hash() on any other string for which do_compare() returns 0 (equal)
when passed the two strings[.](#3.sentence-1)
[4](#4)
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/text.tex#L3482)
*Recommended practice*: The probability that the result equals that for another string
which does not compare equal should be very small,
approaching (1.0/numeric_limits<unsigned long>::max())[.](#4.sentence-1)
[226)](#footnote-226)[226)](#footnoteref-226)
This function is useful when one string is being compared to many other strings[.](#footnote-226.sentence-1)