64,654
社区成员
发帖
与我相关
我的任务
分享
// 图468 ,给定一个map,其键为单词,值为指向只有一个字符不同的单词组的vector.
// 输出具有minwords或更多个通过一个字符替换就可以得到其他单词的那些单词。
void printHighChangeables(const map<string, vector<string> > & adjWords, int minWords = 15)
{
map<string, vector<string> > :: const_iterator itr;
for (itr = adjWords.begin(); itr != adjWords.end(); ++itr)
{
const pair<string, vector<string> > & entry = *itr;
const vector <string> & words = entry.second;
if( words.size() > = minWords)
{
cout << entry.first << " (" << words.size() << ") : ";
for ( int i = 0; i < words.size(); i++)
cout << " " << words[i];
cout << endl;
}
}
}
// 对书本上的例题的几点疑问:
// 1. const_iterator不是意味着itr是const 型吗?为什么还可以++itr?这样的话itr的值不是会变了么?
// 2. 第11行,entry.second是指第二个字母么?entry.first第一个字母?vector中没试过这种用法。
// 3. 最不懂的是,看不出究竟是哪里实现了字符替换的功能,得到了另一个单词,达到原题目的?
// 那个if语句不是只是大小的比较,然后输出的吗?是在这里实现了那个功能么?