Click here to Skip to main content
15,867,568 members
Articles / Programming Languages / C++

Compare lists - Power tool designed for webmasters

Rate me:
Please Sign up or sign in to vote.
1.67/5 (5 votes)
9 Oct 2006CPOL2 min read 28.8K   282   17   2
This lets you take two lists and do all kinds of comparisons.

BigFinder Screenshot

Introduction

As a webmaster, I do a lot of research on the web. This requires many different tools to manage links, content, and domains (of course, my favorite is Pioneer Report ;)). One important task is search engine research. It involves comparing one list of links with another, different list.

It is easy to find software which makes a list or takes a list. But, what if you want to compare two lists? What if you want to know what are the common elements to each list? How about knowing what is in one list but not in another, and eliminating all the duplicates?

This code solves this problem.

Background

There are a lot of tools on the web which use lists of data. This includes stock market research, webmaster tools, government data, product info, etc. As a webmaster, I use many tools which produce or use lists. However, none of these tools let you compare the different lists they produce, or use.

To get around the problem of comparing lists, I decided to write the following code.

Using the Code

Besides a lot of user interface commands, there are three basic routines for comparing lists. They are:

  • CString AnotB(CString&)
  • CString BnotA(CString&)
  • void OnResultsAandB()

In the process of comparing, the routines alphabetize all results. So, once the result is written in the Results window, it is in alphabetical order.

This is what the AnotB routine code looks like:

C++
int CBigFinderDlg::AnotB(CString& sBody) 
{
    std::map<CSTRING, int>::iterator <CODE>it;

    int nResultsCount = 0;

    for (it = m_aMap.begin(); it != m_aMap.end(); it++)
    {
        std::map<cstring, />::iterator itb;

        BOOL bSkip = false;

        for (itb = m_bMap.begin(); itb != m_bMap.end(); itb++)
        {
            if (it->first == itb->first)
            {
                bSkip = true;
                break;
            }
        }

        if (!bSkip)
        {
            if (nResultsCount > 0)
                sBody += "\r\n";

            sBody += it->first;

            nResultsCount++;
        }
    }

    return nResultsCount;
}

Points of Interest

Outside of the comparison routines, most of the code is just UI stuff. However, it does make it easier to use the software to do comparisons.

There are many ways to improve this tool and I will add a lot more features. A few new features to add would be loading lists from a file. Also, for large lists, the app locks until it finishes. By adding threads, it lets you stop the app if it is taking too long.

However, all in all, it appears to be a very useful little tool. I look forward to using this all over the place.

Links

These are my crappy websites: Tiny links | tiny MySpace layouts | MySpace backgrounds.

History

  • 10/09/06: Version 1.0. Current name is BigFinder.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Web Developer
United States United States
Developing with MFC for a couple of years now. Working at getting my new web browsers just right.

My website is at GRML web browsers.

Downloads:
Pioneer Report MDI (GRML/CSV/delimited web browsers)

Other stuff:
free myspace backgrounds | Free Images Graphics | Myspace profile editor

I enjoy Memphis, TN and it is great coz there are absolutely no major sports teams (well, except for the Grizzlies).

Comments and Discussions

 
QuestionWebmaster tool Pin
Allseo12-Feb-15 3:40
Allseo12-Feb-15 3:40 
GeneralJust Wondering Pin
iSeeGhosts11-Feb-09 19:19
iSeeGhosts11-Feb-09 19:19 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.