我从标准输入得到以下输入:
2
5
2 1 5 3 4
5
2 5 1 3 4
第一行代表队列的数量(我们称之为 value n
)。然后,对于每个队列,在第一行有一个l
表示队列长度的值,然后是实际队列。
我正在尝试使用istream_iterator
如下方式将队列放入向量中:
using namespace std;
int n{};
int l{};
typedef std::istream_iterator<int> input_iterator;
cin >> n;
cout<< "n: " << n << "\n";
for(int i = 0; i < n ; ++i){
cin >> l;
cout << "l: " << l << "\n";
std::vector<int> queue;
int counter = 0;
for (input_iterator it(cin); counter < l && it != input_iterator(); ++it){
queue.push_back((*it));
++counter;
}
cout<< "Queue: ";
std::copy(queue.begin(), queue.end(),
std::ostream_iterator<int>(std::cout, " "));
cout << "\n";
}
此代码产生以下输出:
n: 2
l: 5
Queue: 2 1 5 3 4
l: 2
Queue: 5 1
如您所见,第一个队列已正确读取。但第二个l
应该是5
,不是2
。
发生了5
什么?它被迭代器消耗了吗?我在哪里犯了错误?