【发布时间】:2020-10-22 04:39:54
【问题描述】:
我编写了以下程序,它从std::cin 中读取 3 个数字,并将它们输出到std::cout,并执行了两次:
#include <iostream>
#include <algorithm>
#include <iterator>
int main()
{
std::copy_n(std::istream_iterator<int>(std::cin),
3,
std::ostream_iterator<int>(std::cout, " "));
std::copy_n(std::istream_iterator<int>(std::cin),
3,
std::ostream_iterator<int>(std::cout, " "));
}
对于1 2 3 4 5 6 的输入,程序prints 是预期的1 2 3 4 5 6。
由于我发现代码有点冗长,我尝试将迭代器存储在变量中:
#include <iostream>
#include <algorithm>
#include <iterator>
int main()
{
auto ins = std::istream_iterator<int>(std::cin);
auto outs = std::ostream_iterator<int>(std::cout, " ");
std::copy_n(ins, 3, outs);
std::copy_n(ins, 3, outs);
}
但是现在对于输入1 2 3 4 5 6,程序prints1 2 3 1 4 5。
我不明白输出。这是怎么回事,我做错了什么?
另外,请注意,只有在我使用 ins 时才重要。我是否使用outs 不影响输出。
【问题讨论】:
标签: c++ iterator istream-iterator