Sorting Strings with Collation Keys
A common use of collation keys is in sorting a set of strings, where string comparisons are made repeatedly, as demonstrated in the code below:
RWUConversionContext context("UTF-8"); //1
RWUString array[] = { //2
"United States",
"Netherlands",
"United Kingdom",
"Germany",
"France",
"Italy",
"Japan",
"Australia",
""
};
RWUCollator collator; //3
RWTValSortedVector<RWUCollationKey, //4
std::less<RWUCollationKey> > vector;
int i;
for (i = 0; array[i].isNull() == false; ++i) {
vector.insert(collator.getCollationKey(array[i])); //5
}
for (i = 0; i < vector.entries(); ++i) { //6
std::cout << " " << vector[i].getString() << std::endl;
}
// 1 Indicates that source and target strings are encoded as UTF-8.
// 2 Creates an array of country names.
// 3 Creates a collator based on the default locale.
// 4 Creates an empty vector. An RWTValSortedVector<T> automatically keeps its contents in sorted order.
// 5 Populates the vector with RWUCollationKey objects. Note that the vector uses RWUCollationKey::operator<() and operator==() for sorting.
// 6 Prints the sorted vector. Obtains each RWUString object from the stored RWUCollationKey object using getString(), implicitly converts it to UTF-8, and prints the UTF-8.