//: C04:MultiSetWordCount.cpp // From Thinking in C++, 2nd Edition // Available at http://www.BruceEckel.com // (c) Bruce Eckel 2000 // Copyright notice in Copyright.txt //{L} StreamTokenizer // Count occurrences of words using a multiset #include "StreamTokenizer.h" #include "../require.h" #include #include #include #include using namespace std; int main(int argc, char* argv[]) { requireArgs(argc, 1); ifstream in(argv[1]); assure(in, argv[1]); StreamTokenizer words(in); multiset wordmset; string word; while((word = words.next()).size() != 0) wordmset.insert(word); typedef multiset::iterator MSit; MSit it = wordmset.begin(); while(it != wordmset.end()) { pair p=wordmset.equal_range(*it); int count = distance(p.first, p.second); cout << *it << ": " << count << endl; it = p.second; // Move to the next word } } ///:~