注册 登录
编程论坛 C++教室

求教,这段代码有点不懂

qq826647235 发布于 2017-02-20 14:24, 1445 次点击
程序代码:
#include<iostream>
#include<iterator>
#include<numeric>
using namespace std;

int main()
{
    istream_iterator<int> in(cin);
    istream_iterator<int> in_eof;
    int a, b;
    cin >> a >> b;
    cout << accumulate(in, in_eof, 0) << endl;
    cout << a <<' '<< b;

}


运行了一下结果是这样的。
只有本站会员才能查看附件,请 登录

不明白为什么a不是1,b不是2。
还有就是为什么求和的结果不能算a和b。

2 回复
#2
rjsp2017-02-20 15:11
    istream_iterator<int> in(cin); // 取得1
    istream_iterator<int> in_eof;
    int a, b;
    cin >> a >> b; // 取得 2 和 3
    cout << accumulate(in, in_eof, 0) << endl; // 取得之前的1,和之后的 4 5 6
    cout << a <<' '<< b;

所以,C++ --- 包括当今的C --- 把喜欢瞎鸡巴定义变量的行为,喜欢定义到十万八千里外的行为,定为“不建议”,白话就是“恶习”

程序代码:
int main()
{
    int a, b;
    cin >> a >> b;
    cout << accumulate(istream_iterator<int>(cin), istream_iterator<int>(), 0) << endl;
    cout << a << ' ' << b;
}

#3
qq8266472352017-02-20 17:06
回复 2楼 rjsp
取得的意思是输入流里面没有1了吗。。。那accumulate是怎么取那些元素的
1