12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- //usealgo.cpp -- using several STL elements
- #include <iostream>
- #include <string>
- #include <vector>
- #include <set>
- #include <map>
- #include <iterator>
- #include <algorithm>
- #include <cctype>
- using namespace std;
- char toLower(char ch) { return tolower(ch); }
- string & ToLower(string & st);
- void display(const string & s);
- int main()
- {
- vector<string> words;
- cout << "Enter words (enter quit to quit):\n";
- string input;
- while (cin >> input && input != "quit")
- words.push_back(input);
- cout << "You entered the following words:\n";
- for_each(words.begin(), words.end(), display);
- cout << endl;
- // place words in set, converting to lowercase
- set<string> wordset;
- transform(words.begin(), words.end(),
- insert_iterator<set<string> > (wordset, wordset.begin()),
- ToLower);
- cout << "\nAlphabetic list of words:\n";
- for_each(wordset.begin(), wordset.end(), display);
- cout << endl;
- // place word and frequency in map
- map<string, int> wordmap;
- set<string>::iterator si;
- for (si = wordset.begin(); si != wordset.end(); si++)
- wordmap[*si] = count(words.begin(), words.end(), *si);
- // display map contents
- cout << "\nWord frequency:\n";
- for (si = wordset.begin(); si != wordset.end(); si++)
- cout << *si << ": " << wordmap[*si] << endl;
- // cin.get();
- // cin.get();
- return 0;
- }
- string & ToLower(string & st)
- {
- transform(st.begin(), st.end(), st.begin(), toLower);
- return st;
- }
- void display(const string & s)
- {
- cout << s << " ";
- }
|