//strgstl.cpp -- STL을 string에 적용한다.
#include <iostream>
#include <string>
#include <algorithm>
int main()
{
using namespace std;
string letters;
cout<<"글자 그룹을 입력하십시오(끝내려면 quit):";
while(cin>>letters && letters != "quit")
{
cout<<letters<<"의 모든 치환들 : "<<endl;
sort(letters.begin(), letters.end());
cout<<letters<<endl;
while(next_permutation(letters.begin(),letters.end()))
cout<<letters<<endl;
cout<<"다음 시퀀스를 입력하십시오(끝내려면 quit) :";
}
cout<<"프로그램을 종료합니다.";
return 0;
}
//단어 빈도수 검사 프로그램
//usealgo.cpp -- 몇가지 STL 요소들을 사용한다.
#pragma warning (diable : 4244)
#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<<"단어들을 입력하십시오(끝내려면 quit):\n";
string input;
while(cin>>input && input != "quit")
words.push_back(input);
cout<<"다음과 같은 단어들을 입력하셨습니다.";
for_each(words.begin(), words.end(), display);
cout << endl;
//단어들을 소문자로 변환하여 집합에 넣는다.
set<string> wordset;
transform(words.begin(), words.end(), insert_iterator<set<string>>(wordset, wordset.begin()),ToLower);
cout<<"\n단어들의 알파벳순 리스트: \n";
for_each(wordset.begin(), wordset.end(), display);
cout<<endl;
//단어와 빈도를 맵에 넣는다.
map<string, int> wordmap;
set<string>::iterator si;
for(si = wordset.begin(), si != wordset.end(), si++)
{
wordmap[*si] = count(words.begin(),words.end(), *si);/
}
//맵의 내용을 출력한다.
cout<<"\n단어별 빈도:\n";
for(si = wordset.begin(); si!=wordset.end(); si++)
cout<<*si<<": "<<wordmap[*si]<<endl;
return 0;
}
string & ToLower(string & st)
{
transform(st.begin(), st.end(), st.begin(), toLower);
return st;
}
void display(const string & s)
{
cout<<s<<" ";
}