Tak jsem to vyřešil trochu jinak, možná to je trochu přes ruku, ale lepší řešení mě nenapadlo...
jsem si vytvořil struktůru pro jednotlivé znaky a jejich počet a to potom řadim dle počtu znaků
struct Letter
{
QChar Char;
int Count;
Letter(const QChar chr, int count) : Char(chr), Count(count) {}
static bool Less(const Letter left, const Letter right)
{
return right.Count < left.Count;
}
static bool Greater(const Letter left, const Letter right)
{
return right.Count > left.Count;
}
};
A potom ve funkci, která to přidává a řadí to mám takto:
void createLFL(QStringList files)
{
for (int n = 0; n < files.size(); n++)
{
QMap<QChar,int> out;
QString file = files.at(n);
for (int i = 0; i < file.length(); i++)
{
int chr = (int)file.at(i).toAscii();
if (chr >= 65 && chr <= 90 || chr >= 97 && chr <= 122)
out[file.at(i)]++;
}
QList<Letter> letters;
QMap<QChar,int>::const_iterator it = out.begin();
for (; it != out.end(); it++)
{
letters.append(Letter(it.key(), it.value()));
}
qSort(letters.begin(), letters.end(), Letter::Greater);
...
}
}
Pokud někoho napadne lepší řešení, jak budu rád :)