[Interest] Best practice for sorting multiple (connected) QLists
Joshua Grauman
jnfo-c at grauman.com
Tue Nov 19 21:26:44 CET 2013
I fairly often find myself wanting to sort a bit of data. Imagine I have a
few QList<int>'s a QStringList's and that they correspond like a database
table so that I always append to all the lists together with data for one
row. Something like:
QList<int> age, height;
QStringList firstname, lastname;
while(data)
{
age.append(getData1());
height.append(getData2());
firstname.append(getData3());
lastname.append(getData4());
}
Now what if I want to sort all that data, (say by age) so that I can print
out all the first and last names in order according to age.
I've tried different ways of doing this, but they all seem a bit
contrived. The best I've come up with is to have another QMap<int, int>
that maps the sorting order to the indices like:
QList<int> age, height;
QStringList firstname, lastname;
QMap<int, int> order;
while(data)
{
age.append(getData1());
height.append(getData2());
firstname.append(getData3());
lastname.append(getData4());
order[age.last()] = age.size()-1;
}
QList<int> orderedIndices = order.values();
for(int i=0; i<orderedIndices.size(); i++)
{
print(firstname[orderedIndices[i]], lastname[orderedIndices[i]]);
}
It's not too bad. I'm not worried about performance, most of the time
these are just small amounts of data that don't warrant creating a new
class to handle, or creating a database for. I'm just wondering if anyone
has a cleaner way of handling this? What do you do for these types of
situations?
Josh
More information about the Interest
mailing list