gpt4 book ai didi

c++ - 作为返回值的 std::bitset 数组

转载 作者:行者123 更新时间:2023-11-28 06:28:11 24 4
gpt4 key购买 nike

我需要编写一个函数来对两个 std::bitset 执行 N 个不同的 bool 运算符,这两个 std::bitset 在每个运行程序中可以具有不同的大小。所以我尝试编写一个函数在内部执行操作并返回 bitset 数组,但我不知道应该如何定义返回值?

template<size_t SIZE>
.... bitwiseOperator(bitset<SIZE> r_1, bitset<SIZE> r_2, vector<int> fun)
{
int k = 0;
bitset<SIZE> r_12;
const int N = fun.size();
bitset<SIZE> rs[N];
for(vector<int>::iterator it = fun.begin(); it != fun.end(); ++it)
{
if (*it == 1)
{
r_12 = r_1 & r_2;
}
else if(*it == 2)
{
r_12 = r_1 | r_2;
}
else if(*it == 3)
{
r_12 = r_1 ^ r_2;
}
rs[k] = r_12;
k++;
}
return rs;
}

我需要返回值类似于 bitset[N]

最佳答案

您想要返回可变大小的数组这一事实建议使用 std::vector

所以我可能会这样做:

template<size_t SIZE>
std::vector<std::bitset<SIZE> > bitwiseOperator(bitset<SIZE> r_1,
bitset<SIZE> r_2, vector<int> fun)
{
int k = 0;
bitset<SIZE> r_12;

const int N = fun.size(); // not sizeof(fun); !!!

std::vector<std::bitset<SIZE> > rs(N); // Variable size suggests std::vector

for(vector<int>::iterator it = fun.begin(); it != fun.end(); ++it)
{
if(*it == 1)
{
r_12 = r_1 & r_2;
}
else if(*it == 2)
{
r_12 = r_1 | r_2;
}
else if(*it == 3)
{
r_12 = r_1 ^ r_2;
}
rs[k] = r_12;
k++;
}
return rs;
}

关于c++ - 作为返回值的 std::bitset 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28142860/

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