Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. General talk
  3. Brainstorm
  4. [Solved] Duplicate finder
Forum Updated to NodeBB v4.3 + New Features

[Solved] Duplicate finder

Scheduled Pinned Locked Moved Brainstorm
40 Posts 6 Posters 19.4k Views 1 Watching
  • 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.
  • A Offline
    A Offline
    alex.dadaev
    wrote on last edited by
    #31

    maybe like this?
    @int compare_flag;

    while(it.hasNext())
    {
        it.next();
        compare_flag = QString::compare(it.key(),it.peekNext().key(),Qt::CaseSensitive);
                       if(compare_flag==0) {
            std::cout << "i've got you" << std::endl;
        }
    }@
    
    1 Reply Last reply
    0
    • G Offline
      G Offline
      goetz
      wrote on last edited by
      #32

      The keys in a (hash) map are always distinct. You will never find two identical keys so your comparison will never be true.

      And even if you had identical keys in your container you would only find them if they are adjacent in the list.

      But I'm going to have a kind of déjà-vu...

      To make things clearer for us to understand: You do have a multi hash/multi map. What do you put in there and what do you expect to come out?

      http://www.catb.org/~esr/faqs/smart-questions.html

      1 Reply Last reply
      0
      • A Offline
        A Offline
        alex.dadaev
        wrote on last edited by
        #33

        @QHash<QString,int> FilesHash;@
        QString key is MD5
        int value - just a number of file

        on output i want to see the names of similar files

        1 Reply Last reply
        0
        • G Offline
          G Offline
          goetz
          wrote on last edited by
          #34

          Ok, let's make things clearer step by step. Seems that you should make yourself comfortable with the concepts of a map.

          A map (QHash is one) stores values associated with keys. Every key only exists once in the map - I wrote that several times, let's prove it:

          @
          QHash<QString, int> myHash;
          myHash.insert("abc", 2);
          myHash.insert("def", 3);
          myHash.insert("abc", 5);

          qDebug() << "hash keys:" << myHash.keys();

          QHash<QString, int> myMultiHash;
          myMultiHash.insertMulti("abc", 2);
          myMultiHash.insertMulti("def", 3);
          myMultiHash.insertMulti("abc", 5);

          qDebug() << "multi hash keys:" << myMultiHash.keys();
          @

          What will the output be?

          What will happen if you compare every key with every other?

          http://www.catb.org/~esr/faqs/smart-questions.html

          1 Reply Last reply
          0
          • A Offline
            A Offline
            alex.dadaev
            wrote on last edited by
            #35

            insertMulti allows you to store items with similar keys

            1 Reply Last reply
            0
            • A Offline
              A Offline
              alex.dadaev
              wrote on last edited by
              #36

              without overwriting them

              1 Reply Last reply
              0
              • A Offline
                A Offline
                alex.dadaev
                wrote on last edited by
                #37

                what do you think about it?
                @
                bool ok;
                QHashIterator<QString,int> it(FilesHash);
                QHashIterator<QString,int> begin(FilesHash);
                QHashIterator<QString,int> end(FilesHash);
                while(it.hasNext()) {
                it.next();
                begin = qLowerBound(FilesHash.begin(), FilesHash.end(), it.key());
                end = qUpperBound(begin, FilesHash.end(), it.key());
                iter = begin;
                while(iter!=end) {
                if(*i=*it) {
                ok = true;
                } else { ok = false; }
                }
                }
                @

                1 Reply Last reply
                0
                • A Offline
                  A Offline
                  alex.dadaev
                  wrote on last edited by
                  #38

                  why i cannot do like this?
                  @QHashIterator<QString,int> iter(FilesHash);

                  while(it.hasNext()) {
                      it.next();
                      iter = qBinaryFind(FilesHash.begin(), FilesHash.end(), it.key());
                  }@
                  
                  1 Reply Last reply
                  0
                  • A Offline
                    A Offline
                    alex.dadaev
                    wrote on last edited by
                    #39

                    please note that the problem has been solved :)

                    1 Reply Last reply
                    0
                    • G Offline
                      G Offline
                      giesbert
                      wrote on last edited by
                      #40

                      you can do it on your own:
                      go to your first post and click edit :-)
                      and edit the title.

                      Nokia Certified Qt Specialist.
                      Programming Is Like Sex: One mistake and you have to support it for the rest of your life. (Michael Sinz)

                      1 Reply Last reply
                      0

                      • Login

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