// this is nearly the same as before, but some additional thought and
// reorganization yields substantially increased performance

#include <fstream>
#include <iostream>
#include <map>
#include <set>

using namespace std;

string<char> dictionary("/usr/share/dict/words");

int main(int argc, char** argv) {
        map<string, int> words;
        map<string, int> count;
        ifstream w(argv[1]);
        ifstream d(dictionary.c_str());
        string word;

        while (w >> word) {
                words[word]++;
        }

        map<string, int>::iterator i;
        while (d >> word) {
                i = words.find(word);
                if (i != words.end()) {
                        count[word] = (*i).second;
                }
        }

        for (i = count.begin(); i != count.end(); i++)
        {
                cout << (*i).first << ' ' << (*i).second << endl;
        }
        return 0;
};

-- 
Respectfully,

Nicholas Leippe
Sales Team Automation, LLC
1335 West 1650 North, Suite C
Springville, UT  84663 +1 801.853.4090
http://www.salesteamautomation.com

/*
PLUG: http://plug.org, #utah on irc.freenode.net
Unsubscribe: http://plug.org/mailman/options/plug
Don't fear the penguin.
*/

Reply via email to