关于流的问题
问题一:
#include<iostream>
#include<vector>
#include<cstdlib>
using namespace std;
int main()
{
vector<int> v;
copy(istreambuf_iterator<int>(cin),istreambuf_iterator<int>(),back_inserter(v));
copy(v.begin(),v.end(),ostream_iterator<int>(cout," "));
system("pause");
}
为什么不能运行,说istreambuf_iterator没有声明?
问题二:
#include<iostream>
#include<functional>
#include<algorithm>
#include<cstdlib>
using namespace std;
template<class T>
struct print: public unary_function<T,void>
{
print(ostream& out) :os(out),count(0){}
void operator()(T x){os<<x<<' ';++count;}
ostream& os;
int count;
};
int main()
{
int A[] = {1,4,2,8,6,7};
const int N = sizeof(A)/sizeof(int);
print<int> p =for_each(A,A+N,print<int>(cout));
cout<<endl<<p.count<<"objects printed."<<endl;
system("pause");
}
/*为什么在print的成员变量os是ostream&,构造函数的变量也是这种形式呢?
声明引用变量时,不是要进行初始化的吗?
如果去了&,将不能编译,
ios& operator=(ios&); Not allowed!
ios (const ios&); Not allowed!
我在什么地方用了呢?
*/