首页 > 其他 > 详细

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

时间:2018-02-24 23:43:10      阅读:272      评论:0      收藏:0      [点我收藏+]

虽然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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!