gpt4 book ai didi

c++ - 根据模式用数字填充 C++ 数组

转载 作者:行者123 更新时间:2023-12-03 22:56:38 24 4
gpt4 key购买 nike

我有一个要填充数组的模式:

even indices value = -1


odd indices value = 1


我目前是这样实现的:
#include <array>
#include <algorithm>

using namespace std;
int generator(){
static int i = 1;
i *= -1;
return i;
}

std::array<int ,64> arr;
std::generate(arr.begin(), arr.end(), generator);
编辑:当前实现有一个警告 - 返回值 generator不依赖于迭代的对象索引。
有没有办法将当前索引传递给 generator函数所以它的输出将取决于这个索引?

最佳答案

您的 generator函数有一个 static局部变量,它在每次调用时保持其状态。这意味着如果你使用 generator在另一个调用中,它会记住它的旧状态,这可能不是您想要的。
您可以通过编写一个函数来解决此问题,该函数每次调用时都会为您提供一个“生成器”。请注意,返回值(即生成器本身)只是一个 mutable lambda,使得 i 的值在对该 lambda 的多次调用中保留。

auto gen() 
{
return [i = -1]() mutable
{
i *= -1;
return i;
};
}

// usage ...

std::generate(arr.begin(), arr.end(), gen());
这是一个 demo .

关于c++ - 根据模式用数字填充 C++ 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66626257/

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