纠错一个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++.

不知其它编译器如何,大家可以试试。
 

你可能感兴趣的:(python,iterator,input,email,编译器,output)