我经常使用 istream_iterator 将标准输入复制到这样的向量:
copy(istream_iterator<int>(cin), istream_iterator<int>(), back_inserter(vec));
有用。
今天当我通过这个构造一个向量时:
vector<int> vec(istream_iterator<int>(cin), istream_iterator<int>());
copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
它只是无法编译!
但如果我这样构造它:
istream_iterator<int> beg(cin), end;
vector<int> vec(beg, end);
copy(vec.begin(), vec.end(), ostream_iterator<int>(cout, " "));
有用。
为什么?我不能使用临时变量来构造向量吗?如果是这样,但是为什么我在使用 std::copy 时可以这样做?
ps:我是在vs2005下编译的,使用的头文件如下:
#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>