【问题标题】:Finding the sum of a portion of vector int查找向量 int 的一部分的总和
【发布时间】:2014-06-13 12:12:00
【问题描述】:

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

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

还是 5 人一组? (89+49+28+73+93),(62+74+26+57+23)

基本上是 i 组。然后将总和放入另一个向量中。

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

Example2: Groups of 2 ---> vector sum = [138,101,155,...]

【问题讨论】:

  • 好吧,发布您目前拥有的代码,以便我们帮助您找出问题所在。
  • 你可以使用std::accumulate
  • 我怎样才能在我的情况下使用累积?我已经阅读了 www.cplusplus.com 上累积的参考页面,但我仍然感到困惑。对不起。我还是新手..
  • 你传入的开始和结束迭代器可以引用向量中的任何地方。它们在很大程度上就像指针一样工作。

标签: c++ vector int sum


【解决方案1】:

您可以使用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 );

你终于可以使用上面的 for 循环和std::accumulate

演示here

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-15
    • 2020-12-11
    相关资源
    最近更新 更多