泛型算法COPY中传入 istream_iterator对象无法编译的有关问题
泛型算法COPY中传入 istream_iterator对象无法编译的问题
int main(int argc,char **argv)
{
vector <int> vec; copy(istream_iterator <int> (cin),istream_iterator <int> (),back_inserter(vec));
system( "pause ");
}
以上代码可正常编译
如果改成
int main(int argc,char **argv)
{
vector <int> vec;
istream_iterator <int> isiter1(cin);
istream_iterator <int> isiter2();
copy(isiter1,isiter2,back_inserter(vec));
system( "pause ");
}
就编译不过了。
为什么istream_iterator对象一定要在copy()中构造?
------解决方案--------------------
改成:
vector <int> vec;
istream_iterator <int> isiter1(cin);
istream_iterator <int> isiter2;
copy(isiter1, isiter2, back_inserter(vec));
C++中,
class A;
A a();//声明了一个函数a,返回值类型是A。
A a;//这才是定义一个对象。
------解决方案--------------------
int main(int argc,char **argv)
{
vector <int> vec; copy(istream_iterator <int> (cin),istream_iterator <int> (),back_inserter(vec));
system( "pause ");
}
直接编译过去
VC9
int main(int argc,char **argv)
{
vector <int> vec; copy(istream_iterator <int> (cin),istream_iterator <int> (),back_inserter(vec));
system( "pause ");
}
以上代码可正常编译
如果改成
int main(int argc,char **argv)
{
vector <int> vec;
istream_iterator <int> isiter1(cin);
istream_iterator <int> isiter2();
copy(isiter1,isiter2,back_inserter(vec));
system( "pause ");
}
就编译不过了。
为什么istream_iterator对象一定要在copy()中构造?
------解决方案--------------------
改成:
vector <int> vec;
istream_iterator <int> isiter1(cin);
istream_iterator <int> isiter2;
copy(isiter1, isiter2, back_inserter(vec));
C++中,
class A;
A a();//声明了一个函数a,返回值类型是A。
A a;//这才是定义一个对象。
------解决方案--------------------
int main(int argc,char **argv)
{
vector <int> vec; copy(istream_iterator <int> (cin),istream_iterator <int> (),back_inserter(vec));
system( "pause ");
}
直接编译过去
VC9