这个程序看不是很懂~~~
#include <map>
#include <string>
#include <fstream>
using namespace std;
int main ()
{
typedef multimap<char,string> M1;
typedef M1::value_type v_t1;
M1 m1;
typedef multimap<string,char,less<string> > M2;
typedef M2::value_type v_t2;
M2 m2;
string word;
int counter = 0;
ifstream In("words.txt");
if ( In.good() )
{
while(1)
{
getline(In,word);
char ch = word.at(0);
// file is sorted
if ( ch != 'A' && ch != 'a' )
break;
else
{
// for counting of words
m1.insert(v_t1(ch,word));
// for upper-lower bound
m2.insert(v_t2(word,ch));
}
counter++;
}
In.close();
}
cout << "System Dictionary consists " << counter
<< " words,\nwith first letter 'a' or 'A'"
<< endl;
cout << m1.count('A') << " words start with 'A'"
<< endl;
cout << m1.count('a') << " words start with 'a'"
<< endl;
M2::iterator low = m2.lower_bound("Aba");
M2::iterator upp = m2.upper_bound("Abe");
cout << "Range of the words from 'Aba' to 'Abe':"
<< endl;
while ( low != upp )
{
cout << (*low).first << endl;
low++;
}
return 0;
}
//OUTPUT:
// System Dictionary consists 3577 words,
// with first letter 'a' or 'A'
// 491 words start with 'A'
// 3086 words start with 'a'
// Range of the words from 'Aba' to 'Abe':
// Ababa
// Abba
// Abbott
// Abby
// Abe