Hi everyone!

I tried the suggestions of using QMap and QPair but it takes ages! For example, one of the files has almost 25 million lines and it took 14 hours just to read with the following code:

Qt Code:
  1. #include <QCoreApplication>
  2. #include <QMultiMap>
  3. #include <QtCore/QFile>
  4. #include <QTextStream>
  5. #include <QStringList>
  6. #include <iostream>
  7. #include <QDebug>
  8. #include <QDir>
  9. #include <QByteArray>
  10. #include <QTime>
  11.  
  12. using namespace std;
  13.  
  14. int main(int argc, char *argv[])
  15. {
  16. QTime myTimer;
  17. QCoreApplication a(argc, argv);
  18. QPair < QString, QString > pair1;
  19. QMap< QPair < QString, QString >, QString > map1;
  20. QMap< QString, QString > map2;
  21. QMap< QString, QMap< QString, QString > > map3;
  22. QString id, time, value;
  23.  
  24. QFile file("File2.txt");
  25. if (!file.open(QIODevice::ReadOnly | QIODevice::Text)) {
  26. qDebug() << file.fileName() << file.error() << file.errorString();
  27. return 0;
  28. }
  29.  
  30. QTime begin, end;
  31. begin = begin.currentTime();
  32.  
  33. QTextStream in(&file);
  34. myTimer.start();
  35. int count = 0;
  36. /*while (!in.atEnd()) {
  37.   QString line = in.readLine();
  38.   QStringList list1 =line.split(' ');
  39.   pair1.first = list1[0];
  40.   pair1.second = list1[1];
  41.   map1.insert(pair1, list1[2]);
  42.   cout << count++ << "\n";
  43.   }*/
  44. while (!in.atEnd()) {
  45. QString line = in.readLine();
  46. QStringList list1 =line.split(' ');
  47. map2.insert(list1[1], list1[2]);
  48. map3.insert(list1[0], map2);
  49. cout << count++ << "\n";
  50. }
  51.  
  52. end = end.currentTime();
  53. cout << begin.hour() << ":" << begin.minute() << ":" << begin.second() << " " << myTimer.elapsed() << " " << end.hour() << ":" << end.minute() << ":" << end.second() << "\n";
  54. return 0;
  55. }
To copy to clipboard, switch view to plain text mode 

I'll give a try to the the QtConcurrent.