PDA

View Full Version : Sorting algorithm to sort data based on common keys



npatil15
20th June 2019, 07:44
Hi,

I have data in a format like as,

QList<QPair<QString, QJsonValue>> sessionList

Check the sample data of sessionList

QPair("2717b2bb-aa1f-460e-b6ff-c932114a8b99",QJsonValue(object, QJsonObject({"CreatedAt":"2019-06-18T10:34:37.3501135","FileName":"imgLeft8bitColor_000000050.png","FrameIndex":30,"ImageGuid":"76d453ed-0950-424d-952f-b20d1f0c921f","IsKeyframe":false, "TabGuid":"2717b2bb-aa1f-460e-b6ff-c932114a8b99"})))
QPair("078f7119-844d-4c31-9eee-c695f2c9adbb",QJsonValue(object, QJsonObject({"CreatedAt":"2019-06-18T11:21:58.5620774","FileName":"imgLeft8bitColor_000000050.png","FrameIndex":30,"ImageGuid":"3c9517ae-6c96-4746-8279-1c143339f576","IsKeyframe":false, "TabGuid":"078f7119-844d-4c31-9eee-c695f2c9adbb"})))

Like above I have more data that I want to sort based on QPair.first(consider as key)(say, "078f7119-844d-4c31-9eee-c695f2c9adbb").
So what sorting algorithm I should use which sort my QJsonValue for the same type of key in one container?

Note: Key count can vary

Ginsengelf
20th June 2019, 08:08
Hi, you can use std::sort to sort a QList. This algorithm accepts a custom compare function.
See http://www.cplusplus.com/reference/algorithm/sort/ for details and an example.

Ginsengelf

npatil15
20th June 2019, 08:36
Sorting means not to sort in ascending or descending order, I want all the data having the same key in one container.
I found one solution for that, use QMultiHash or QMultiMap, here it can allow adding multiple data under the same key, so in that way, I can distinguish or sort data.

But still, I'm looking for an option where I can have one key and data can be added under that key only, not the way QMultiHash work, as it stores key and data in a separate list even if keys are same.

Ginsengelf
20th June 2019, 10:12
Maybe a QMap < QString, QList < QJsonValue > >?

Ginsengelf

npatil15
21st June 2019, 07:36
Thank you Ginsengelf, it works like a charm :cool: