Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. QString split to QMap
QtWS25 Last Chance

QString split to QMap

Scheduled Pinned Locked Moved Solved General and Desktop
16 Posts 4 Posters 4.3k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • D Defohin

    @mostefa I did exactly as you said, I asked here to see if people would answer in a different way.

    Thank you.

    mrjjM Offline
    mrjjM Offline
    mrjj
    Lifetime Qt Champion
    wrote on last edited by
    #5

    @Defohin
    But if you use int as key, what would be the benefit for a map over
    QStringList ? It will be slower for the look up most likely. :)

    D 1 Reply Last reply
    0
    • mrjjM mrjj

      @Defohin
      But if you use int as key, what would be the benefit for a map over
      QStringList ? It will be slower for the look up most likely. :)

      D Offline
      D Offline
      Defohin
      wrote on last edited by
      #6

      @mrjj How would I get the key from a QStringList value?

      I wanted the QMap for that:

      https://forum.qt.io/topic/75259/intersection-of-two-qmap/

      mrjjM 1 Reply Last reply
      0
      • D Defohin

        @mrjj How would I get the key from a QStringList value?

        I wanted the QMap for that:

        https://forum.qt.io/topic/75259/intersection-of-two-qmap/

        mrjjM Offline
        mrjjM Offline
        mrjj
        Lifetime Qt Champion
        wrote on last edited by
        #7

        @Defohin
        Well it has indexof to go from String to int but
        the key is the index..

        list1[INDEX]
        so for this string, index is just the KEY

        Of cause , if you have 1,2,3,100,200,400
        then map is ofc better.

        D 2 Replies Last reply
        0
        • mrjjM mrjj

          @Defohin
          Well it has indexof to go from String to int but
          the key is the index..

          list1[INDEX]
          so for this string, index is just the KEY

          Of cause , if you have 1,2,3,100,200,400
          then map is ofc better.

          D Offline
          D Offline
          Defohin
          wrote on last edited by Defohin
          #8

          @mrjj It's not going to have a lot of values, in this case QStringList::indexOf would be better?

          I noticed that indexOf is using QRegularExpression isn't that going to be slower?

          mrjjM 1 Reply Last reply
          0
          • D Defohin

            @mrjj It's not going to have a lot of values, in this case QStringList::indexOf would be better?

            I noticed that indexOf is using QRegularExpression isn't that going to be slower?

            mrjjM Offline
            mrjjM Offline
            mrjj
            Lifetime Qt Champion
            wrote on last edited by
            #9

            @Defohin
            Ahh sorry. I missed the intersection thing.
            No, then QMap is better as indexof is slower due to string searching as if the requirement is to
            check if value is there and overwrite or just append if not found.

            But if the number of items is low, then just focus on good names and
            nice structure as performance wise it really wont matter to the app. :)

            D 1 Reply Last reply
            0
            • mrjjM mrjj

              @Defohin
              Well it has indexof to go from String to int but
              the key is the index..

              list1[INDEX]
              so for this string, index is just the KEY

              Of cause , if you have 1,2,3,100,200,400
              then map is ofc better.

              D Offline
              D Offline
              Defohin
              wrote on last edited by
              #10

              @mrjj Based on the other question and this one, I made this:

                  QStringList a = { "foo", "bar", "fez", "fiz", "foz", "biz" };
              
                  QStringList b = { "foo", "bar", "biz" };
              
                  QMap<int, QString> c;
              
                  foreach (QString value, b) {
                      if (! a.contains(value))
                          return;
              
                      c.insert(a.indexOf(value), value);
                  }
              
                  qDebug() << c.keys() << c.values();
              

              It worked, but I don't know if it's going to be faster than:

                  QMap<int, QString> a = {
                      { 0, "foo" },
                      { 1, "bar" },
                      { 2, "fez" },
                      { 3, "fiz" },
                      { 4, "foz" },
                      { 5, "biz" }
                  };
              
                  QStringList b = { "foo", "bar", "biz" };
              
                  QMap<int, QString> c;
              
                  foreach (QString value, b) {
                      if (! a.values().contains(value)) continue;
                      c.insert(a.key(value), value);
                  }
              
                  qDebug() << inter.keys() << inter.values();
              
              1 Reply Last reply
              0
              • mrjjM mrjj

                @Defohin
                Ahh sorry. I missed the intersection thing.
                No, then QMap is better as indexof is slower due to string searching as if the requirement is to
                check if value is there and overwrite or just append if not found.

                But if the number of items is low, then just focus on good names and
                nice structure as performance wise it really wont matter to the app. :)

                D Offline
                D Offline
                Defohin
                wrote on last edited by
                #11

                @mrjj said in QString split to QMap:

                @Defohin
                Ahh sorry. I missed the intersection thing.
                No, then QMap is better as indexof is slower due to string searching as if the requirement is to
                check if value is there and overwrite or just append if not found.

                But if the number of items is low, then just focus on good names and
                nice structure as performance wise it really wont matter to the app. :)

                It would have maximum 200 items.

                mrjjM 1 Reply Last reply
                0
                • D Defohin

                  @mrjj said in QString split to QMap:

                  @Defohin
                  Ahh sorry. I missed the intersection thing.
                  No, then QMap is better as indexof is slower due to string searching as if the requirement is to
                  check if value is there and overwrite or just append if not found.

                  But if the number of items is low, then just focus on good names and
                  nice structure as performance wise it really wont matter to the app. :)

                  It would have maximum 200 items.

                  mrjjM Offline
                  mrjjM Offline
                  mrjj
                  Lifetime Qt Champion
                  wrote on last edited by
                  #12

                  @Defohin
                  Well its fine code you have above.
                  Seems totally ok for the task.

                  D 1 Reply Last reply
                  0
                  • mrjjM mrjj

                    @Defohin
                    Well its fine code you have above.
                    Seems totally ok for the task.

                    D Offline
                    D Offline
                    Defohin
                    wrote on last edited by
                    #13

                    @mrjj You mean QStringList or QMap?

                    mrjjM 1 Reply Last reply
                    0
                    • D Defohin

                      @mrjj You mean QStringList or QMap?

                      mrjjM Offline
                      mrjjM Offline
                      mrjj
                      Lifetime Qt Champion
                      wrote on last edited by
                      #14

                      @Defohin
                      QMap for the look up.

                      D 1 Reply Last reply
                      0
                      • D Defohin

                        Hi there, I was wondering, how to transform a QString::split into a QMap<int, QString> where the int is the position of the value and the QString is the value in a QMap?

                        QString identifier = "foo.bar.biz.boz"

                        It shoud be:

                        QMap<int, QString> result = {
                            { 0, "foo" },
                            { 1, "bar" },
                            { 2, "biz" },
                            { 3, "boz" }
                        }
                        
                        kshegunovK Offline
                        kshegunovK Offline
                        kshegunov
                        Moderators
                        wrote on last edited by
                        #15

                        Why do you need to use a map for this to begin with (you'd always get worst case complexity for this particular case)? Just use a vector (QVector) or a list (QStringList).

                        Read and abide by the Qt Code of Conduct

                        1 Reply Last reply
                        3
                        • mrjjM mrjj

                          @Defohin
                          QMap for the look up.

                          D Offline
                          D Offline
                          Defohin
                          wrote on last edited by
                          #16

                          @mrjj Thank you, solved the problem and it's working like a boss.

                          1 Reply Last reply
                          1

                          • Login

                          • Login or register to search.
                          • First post
                            Last post
                          0
                          • Categories
                          • Recent
                          • Tags
                          • Popular
                          • Users
                          • Groups
                          • Search
                          • Get Qt Extensions
                          • Unsolved