# include & ltiostream & gt
# include & ltsstream & gt
# include & lt地圖& gt
使用命名空間std
int main()
{
typedef string::size _ type ST;
//存儲所有單詞的長度、單詞本身以及單詞出現的位置。
多地圖& ltST,pair & ltstring,ST & gt& gtm;
弦線;
cout & lt& lt請輸入壹個英語句子:
getline(cin,line);
ST pos = 0;
while((pos=line.find(','))& ltline.size())
第[pos]行=“”;//替換所有逗號。
istringstream ins(行);
字符串令牌;
pos = 0;
while(ins & gt;& gt令牌)
m . insert(pair & lt;ST,pair & ltstring,ST & gt& gt(token.size(),
pair & ltstring,ST & gt(token,pos=line.find(token,pos)+1));
ST t = m . r begin()-& gt;第壹;
//地圖容器默認按鍵排序,最後壹個長度最長。去吧。
for(multimap & lt;ST,pair & ltstring,ST & gt& gt::reverse _ iterator it = m . Rb egin();
它!= m . rend();++it)
如果(它-& gt;first==t)
cout & lt& lt“最長的單詞是”
& lt& lt"起始位置是:"
else break
}
如果有長度相同的單詞,則以逆序顯示,這樣更簡單。起始位置從1開始計算。