【问题标题】:How to calculate sum of a vector till a specific index using accumulate() in c++c++ - 如何使用c++中的accumulate()计算一个向量的总和直到一个特定的索引
【发布时间】:2021-10-10 18:38:59
【问题描述】:

我想知道是否可以使用accumulate() 执行向量求和直到特定索引。示例

vector<int> v ={1,2,3,4,5,6};
int sum = accumulate(v.begin(), till_index_4, 0);

我找到的所有示例都说accumulate(v.begin(), v.end(), 0); 我也尝试使用迭代器,但我的代码没有编译。如果有任何可能的解决方案,请告诉我。

【问题讨论】:

  • “也尝试了迭代器,但我的代码没有编译”你能告诉我们那个代码吗?
  • 参数不是索引而是迭代器。您实际上只需要包含 1 或 2 行代码和错误消息,以使其更容易回答
  • std::accumulate 不知道您提供的数据来自 vector&lt;int&gt;。它适用于由两个迭代器描述的范围。所以只要给它你感兴趣的范围的迭代器。
  • accumulate(v.begin(), v.begin() + 4, 0); 是我认为您要的吗?该代码假定范围是有效的。

标签: c++ accumulate


【解决方案1】:

C++ 标准库提供函数std::next,它将一个迭代器带入一个序列,并产生另一个迭代器n。对于 std::vector 迭代器,这是一个 O(1) 操作。

如果你知道你的vector中的n-th位置是有效的,你可以这样累加:

int sum = accumulate(v.begin(), std::next(v.begin(), 4), 0);

【讨论】:

  • 或者干脆v.begin() + 4
猜你喜欢
  • 1970-01-01
  • 2020-11-03
  • 2019-10-06
  • 2020-01-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多