我需要编写一个函数在两个std :: bitset上做N个不同的布尔运算符,每个运行程序可以有不同的大小。所以我试着编写一个在里面进行操作并返回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]
答案 0 :(得分:1)
您想要返回一个可变大小的数组,建议使用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;
}