namespace std {
template<class charT>
class collate : public locale::facet {
public:
using char_type = charT;
using string_type = basic_string<charT>;
explicit collate(size_t refs = 0);
int compare(const charT* low1, const charT* high1,
const charT* low2, const charT* high2) const;
string_type transform(const charT* low, const charT* high) const;
long hash(const charT* low, const charT* high) const;
static locale::id id;
protected:
~collate();
virtual int do_compare(const charT* low1, const charT* high1,
const charT* low2, const charT* high2) const;
virtual string_type do_transform(const charT* low, const charT* high) const;
virtual long do_hash (const charT* low, const charT* high) const;
};
}
The class
collate<charT>
provides features for use in the
collation (comparison) and hashing of strings
. A locale member function template,
operator(),
uses the collate facet to allow a locale to act directly as the predicate
argument for standard algorithms (
[algorithms]) and containers operating on strings
. Each function compares a string of characters
*p
in the range
[
low, high)
.