gpt4 book ai didi

c++ - 获取 C++ 多重集中的前 N ​​个元素

转载 作者:搜寻专家 更新时间:2023-10-31 00:01:57 27 4
gpt4 key购买 nike

如何从多重集结构中获取前 N 个元素,而不是不断地获取第一个 (.begin()) 元素然后将其删除?

我只想在不影响多重集的情况下对前 N 个元素求和。

最佳答案

I just want to sum the first N elements without affecting the multiset.

#include <numeric>
#include <iterator>

// ...

int sum = std::accumulate(my_set.begin(), std::next(my_set.begin(), N));

std::next 是 C++11 库的补充。这是针对旧编译器的解决方案:

std::multiset<int>::iterator it = my_set.begin();
std::advance(it, N);
int sum = std::accumulate(my_set.begin(), it);

两种解决方案都对多重集进行了两次迭代。如果你想防止这种情况发生,请使用手动循环:

int sum = 0;
std::multiset<int>::iterator it = my_set.begin();
for (int i = 0; i < N; ++i)
{
sum += *it++;
}

关于c++ - 获取 C++ 多重集中的前 N ​​个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8960403/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com