这是我写的字数统计。我得到了这个错误:cannot use obsolete binding at ‘input’ because it has a destructor和error: name lookup of ‘input’ changed for ISO ‘for’ scoping是什么意思?提前谢谢。
//rewrite the word-count program using insert instead of subscripting
#include <iostream>
#include <utility>
#include <map>
#include <string>
using namespace std;
int main ()
{
cout<<"please enter some words"<<endl;
map<string,int> word_count;
for(string input; cin>>input; )
if(!word_count.insert(make_pair(input,1)).second);
++word_count[input];
for(map<string,int>::iterator iter=word_count.begin(); iter!=word_count.end(); ++iter)
cout<<iter->first<<": "<<iter->second<<endl;
return 0;
}发布于 2011-11-13 01:48:54
移除;移出
if(!word_count.insert(make_pair(input,1)).second);
通常尝试使用{},使您的代码更具可读性和可维护性。
发布于 2011-11-13 01:49:14
for(string input; cin>>input; )
if(!word_count.insert(make_pair(input,1)).second);
++word_count[input];if结束if块后的分号。您的代码等同于:
for(string input; cin>>input; )
{
if(!word_count.insert(make_pair(input,1)).second)
{}
}
++word_count[input];input的作用域是for循环的作用域,您正试图在它之外使用它。
https://stackoverflow.com/questions/8106313
复制相似问题