码迷,mamicode.com
首页 > 其他好文 > 详细

# 比赛中遇到STL的大坑之accumulate

时间:2018-02-25 00:03:57      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:永久   inux   mes   gpo   pre   include   code   gcc   stl   

虽然C++永久了感觉很熟练,但是并没有什么卵用,随时都可能遇到可以吃掉剩下时间的迷のBUG。。。

#include <iostream>
#include <numeric>
#include <vector>
using namespace std;
int main(){
    vector<long long int> v(3,(long long int)1e9);
    cout<<accumulate(v.begin(),v.end(),0)<<endl;
    return 0;
}

根据经验认为我vector的元素都是long long int的,那么accumulate加起来自然是long long int类型的,然而事实。。。

-1294967296

ps: 编译器是Linux下的gcc 7.3.0

OTZ

正确做法

accumulate(v.begin(),v.end(),0LL)

居然是第三个初始值的参数类型决定结果类型。比赛要是遇到这种BUG那就一脸懵逼了。C语言大法好(手动滑稽)

# 比赛中遇到STL的大坑之accumulate

标签:永久   inux   mes   gpo   pre   include   code   gcc   stl   

原文地址:https://www.cnblogs.com/icequarze/p/8467863.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!