使用流迭代器, sort, co…

int main ()
{
    cout << "Please input some numbers:" << endl;

    //定义输入流迭代器和尾后迭代器
    istream_iterator input_number_it (cin), eof;
    //用迭代器与尾后迭代器初始化vector
    vectornumbers(input_number_it, eof);

    sort (numbers.begin (), numbers.end ());
    //定义输出流迭代器, 其输出的每个值后面都输出一个" "
    ostream_iterator output_numbers (cout, " ");
    /*
        输出方式也可以使用以下两种:
        for(auto e : numbers)
            *output_numbers++ = e;
       
        for(auto e : numbers)
            output_number = e;
        以上两者均可, 推荐前一种,
        想修改为其他迭代器时更为方便
    */
    //使用copy更为简单
    copy (numbers.begin (), numbers.end (), output_numbers);
    cout << endl;
    return 0;
}

开始我输入类似123124234234234内容后, 输入中断, 输出为空, 输出numbers.size()之后发现为0, 后来发现是因为超出了int的范围 = =! 将int改为long long可以解决, 或者输入的内容在int范围之内也可以, 我希望可以在输入时检查输入的合法性, 但目前不知从何入手, 希望在接下来的学习中可以找到办法.
posted @ 2014-07-18 21:07  wu_overflow  阅读(118)  评论(0编辑  收藏  举报