纠错一个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++.
不知其它编译器如何,大家可以试试。