gpt4 book ai didi

c++ - 如何将不同大小的位集传递给函数?

转载 作者:行者123 更新时间:2023-12-03 06:53:47 25 4
gpt4 key购买 nike

我想将位集传递给函数。什么size我应该分配给位集参数 bits在函数原型(prototype)中,位集是否具有不同的大小?

例如:

bitset<3> a;
bitset<4> b;

void ABC(bitset<size> bits){
...
}

ABC(a);
ABC(b);

最佳答案

您可以templatize该函数以位集作为参数。

template <size_t bitsetsize>
void ABC(bitset<bitsetsize> a) {
...
}

仅当您在代码中的某个位置使用该模板化函数时,编译器才会生成该函数。如果将此函数用于不同大小的位集,则将为每个大小实例化一次单独的函数。因此,您应该注意避免代码依赖于任何本地状态变量( static 函数本地变量),因为函数实例不同。

建议使用引用或常量引用以避免对象复制。

template <size_t bitsetsize>
void ABC(const bitset<bitsetsize> &a) {
...
}

可能不适合您的要求的替代方案是使用 std::vector<bool>而不是std::bitset如果可能的话。

关于c++ - 如何将不同大小的位集传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23867176/

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