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

Posted icequarze

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了# 比赛中遇到STL的大坑之accumulate相关的知识,希望对你有一定的参考价值。

虽然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的主要内容,如果未能解决你的问题,请参考以下文章

STL的accumulate用法

stl集合算法

accumulate

Python-Web框架之 - 利用SQLALchemy创建与数据库MySQL的连接, 详解用Flask时会遇到的一些大坑 !

ACM之运算符重载结合STL

iOS 之(集成支付宝SDK大坑总结)