求向量int的一部分的和

Finding the sum of a portion of vector int

本文关键字:一部分 int 向量      更新时间:2023-10-16

我很难找到添加向量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)

基本上是i的群,然后把和代入另一个向量。

示例1:3组--->向量和=[166228157,…]

示例2:2-->向量和=[138101155,…]的组

您可以使用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 循环

演示此处