`
luliangok
  • 浏览: 780986 次
文章分类
社区版块
存档分类
最新评论

纠错一个Python程序引发的讨论

 
阅读更多

纠错一个Python程序引发的讨论

一个Python程序引发的讨论”确实热烈。
在此提一小错, 也是stl的一个应用示例。

C/C++(3):周星星/蒋黎(4.5s)

int main( void )
{
set<string> emails( istream_iterator<string>(ifstream( "email.txt" )), istream_iterator<string>() );
copy( emails.begin(), emails.end(), ostream_iterator<string>(ofstream( "email_new.txt" ),"/n") );
return 0;
}

这一段简洁的代码,不能编译(不知4.5s的结果是怎么出来的)。
需要如下修改

ifstream input("email.txt");
ofstream output("email_new.txt");
set<string> emails( (istream_iterator<string>(input)),
(istream_iterator<string>()) );
copy( emails.begin(), emails.end(),
ostream_iterator<string>(output, "/n") );

有两处修改:
1. 必须实例化ifstream, 因为 istream_iterator<>(istream_type&)
不能接受一个 const 参数。ofstream同理。

2. set<> 构造函数的两个参数要用括号括起来,不然编译器会以为
声明了一个返回值为set的函数emails。这可能与编译器有关。
我用的是DevCpp带的g++.

不知其它编译器如何,大家可以试试。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics