//usealgo.cpp -- using several STL elements #include #include #include #include #include #include #include #include using namespace std; char toLower(char ch) { return tolower(ch); } string & ToLower(string & st); void display(const string & s); int main() { vector 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 wordset; transform(words.begin(), words.end(), insert_iterator > (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 wordmap; set::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 << " "; }