gpt4 book ai didi

c++ - 分配 vector 的前缀和并将结果存储在静态 vector 中

转载 作者:行者123 更新时间:2023-12-02 09:56:28 25 4
gpt4 key购买 nike

假设有一个函数定义,例如:

int PrefixSum(vector<int>& nums, int pos) {
static vector<int> prefixsum = ....
return nums[pos];
}

我想预先计算前缀和 vector ,因为该函数将被多次调用。
假定nums vector 不变,所以静态前缀和 vector 是有效的。
另外,由于遗留目的,我无法更改函数定义。

最佳答案

一种简单的方法可以如下所示

#include <iostream>
#include <vector>
#include <iterator>
#include <numeric>

long long int PrefixSum( const std::vector<int>& nums,
std::vector<long long int>::size_type pos )
{
static std::vector<long long int> prefixsum;

if ( prefixsum.empty() )
{
prefixsum.reserve( nums.size() );
std::partial_sum( std::begin( nums ), std::end( nums ),
std::back_inserter( prefixsum ) );
}

return prefixsum[pos];
}

int main()
{
std::vector<int> v = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };

std::cout << PrefixSum( v, v.size() - 1 ) << '\n';

return 0;
}

程序输出为
45

关于c++ - 分配 vector 的前缀和并将结果存储在静态 vector 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59646798/

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