找到vector int的一部分的总和

时间:2014-04-28 04:56:32

标签: c++ vector int sum

我无法找到添加矢量int的一部分的方法。例如,如果我的向量int是[89,49,28,73,93,62,74,26,57,23等...]

如何将矢量添加到3个组中? (89 + 49 + 28),(73 + 93 + 62),(74 + 26 + 57)

或5人团体? (89 + 49 + 28 + 73 + 93),(62 + 74 + 26 + 57 + 23)

基本上我的团体。然后将总和放入另一个向量中。

示例1:3的组--->矢量和= [166,228,157,...]

实施例2:2的组--->矢量和= [138,101,155,...]

1 个答案:

答案 0 :(得分:0)

您可以使用std::accumulate,如下所示

// v the original vector
// int n =3; // groups
for(it= v.begin(); it != v.end() ; it += n )
    std::cout << std::accumulate( it, it+n, 0) << std::endl ;

在这里,您需要确保it未通过向量v的结尾,您可以执行此操作以附加零,如下所示:

int zeros = n - (( v.size( ) % n )  ?  ( v.size( ) % n ) : n ) ;
for( int x = 1 ; x <= zeros; ++x )
    v.push_back( 0 );

最后你可以使用上面的std::accumulate

进行循环

演示here