C++ 位掩码:代码块的说明
c++ bitmask: explanation of a code block
我是 c++ 的新手,我很难理解位掩码。如果有人可以用最简单的方式描述以下代码的工作原理(http://rosettacode.org/wiki/Combinations#C.2B.2B(:
#include <algorithm>
#include <iostream>
#include <string>
void comb(int N, int K)
{
std::string bitmask(K, 1); // K leading 1's
bitmask.resize(N, 0); // N-K trailing 0's
// print integers and permute bitmask
do {
for (int i = 0; i < N; ++i) // [0..N-1] integers
{
if (bitmask[i]) std::cout << " " << i;
}
std::cout << std::endl;
} while (std::prev_permutation(bitmask.begin(), bitmask.end()));
}
int main()
{
comb(5, 3);
}
我了解这段代码的目的以及输出是什么,但我不理解字符串位掩码std::string bitmask(K, 1)
的初始化,以及resize(N, 0)
做什么。
std::string bitmask(K, 1)
创建一个名为bitmask
的字符串,并使用字符1
的K
实例对其进行初始化(注意,不是字符'1'
(。
然后bitmask.resize(N, 0)
将字符串的大小调整为大小N
,并用字符0
填充任何空白(再次注意,不要注意字符'1'
(
因此,如果2
"K"并且N
5
,您最终会得到一个包含不可打印字符的字符串1 1 0 0 0
在我看来,代码存在一些问题 - 首先,构造函数和resize
应该'0'
和'1'
传递,而不是0
和1
。其次,当N
低于K
时,它不能满足
相关文章:
- 16 位到 10 位转换代码说明
- 标准对此指向成员函数类型模板参数有何说明?是我的代码有误,还是 MSVS 16.6 有问题?
- 您好,我实际上想了解以下代码.有人可以详细说明代码它到底在做什么吗?为什么它会在第 31 行崩溃
- 有没有办法在c ++中清除空数组,请检查下面的代码以获取说明
- 严重性代码说明项目文件行抑制状态错误 C2676 二进制">>":"std::ifstream"
- 使用向量(STL)时,未定义的行为,请说明理性背后的以下代码输出
- C++ 位掩码:代码块的说明
- 用于确定一个类是否派生自另一个类的代码说明
- 反向链表的递归函数(代码段说明)
- 快速排序代码说明
- C++ 代码截图的说明
- 以下代码片段的说明C++
- C++代码说明 - 命名空间
- C++代码说明
- C++单例代码的说明
- 从 visio 块 digrame 到 c++ 代码或文本说明
- 所需代码的说明
- 包含const_cast的代码片段的说明
- c++代码输出说明
- 此代码构造的说明