使用无符号int作为二进制来在c++中实现一个集
Using an unsigned int as binary to implement a set in c++
我有一个赋值,要求我使用无符号整数实现一个集。
通常,我会使用内置的c++集来存储1-9的数字。
任务是创建一个备用数据结构,通过无符号整数保存集合中的数字。
例如,如果我的集合中有一个数字"1"、"3"answers"4",它看起来像:
000001101
这可以通过在插入新项目时将每个位从0切换到1来实现。
但当我最初通过构造函数创建"unsigned int"时:
class unsignedIntSet {
private:
unsigned int valuesInSet;
int noOfElements;
public:
unsignedIntSet() : noOfElements(0), valuesInSet(000000000){
cout<<"the values in the set are: "<<valuesInSet;
}
...
};
它打印:"集合中的值为:0256">
如何将成员变量"valuesISet"视为我赋予它的文字值000000000,而不是出于某种原因将其转换。
我不知道如何通过这种方式获得0256
的输出。我得到的输出是0
。还要注意,000000000
是八进制文字(但无论哪种方式,结果都是0
(。你要找的是0b00000000
——在这里你可以切换每个比特并获得正确的数字。例如,0b00001010
就是10
。
打印二进制表示的最简单方法可能是使用位集。包括<bitset>
并执行以下操作:
std::cout << "the values in the set are: "
<< std::bitset<sizeof(unsigned int) * CHAR_BIT>(valuesInSet);
我怀疑使用bitset
会使任务变得毫无意义(因为这是你应该实现的(,所以你也可以尝试
for (int i = sizeof(unsigned int)* CHAR_BIT -1; i >= 0; i--) {
std::cout << bool(valuesInSet & (1 << i));
}
相关文章:
- 实现一个在集合上迭代的模板函数
- 如何为位集找到/实现一个好的哈希函数
- C++:实现一个全局常量,其值由用户给出
- C++:实现一个接收lambda作为输入的高阶函数
- 如何实现一个接受任何容器类型的函数
- 使用无符号int作为二进制来在c++中实现一个集
- 在int main()[c++]中实现一个递归函数
- 为什么T是未定义的?我正在尝试实现一个用于双链表的节点类,它不喜欢我使用友元运算符后的T
- 实现一个函数,该函数将字符串作为输入并返回一个新字符串,辅音字母不替换为 "!"
- 实现一个想要模拟 std::string 但在将其push_back向量时卡住的类
- 为 RocksDB 实现一个比较器
- 在使用表达模板的矩阵库中实现一个行类别的分配运算符
- 我需要实现一个指向成员函数重载的 c++ 函数指针
- 如何实现一个奇怪的循环
- 实现一个函数 StrSep(s, sub, part1, part2) 来接收字符串和子字符串 (sub) 并返回 :
- 我正在尝试为 Kruskal 算法实现一个C++程序,该程序需要我按权重对图形进行排序。如何按权重对结构进行排序
- 实现一个通用堆栈容器作为适配器类模板
- 如何用decltype实现一个不太通用的std::is_constructible
- 有可能实现一个与数组而不是单个对象一起工作的内存池吗
- QTextEdit 实现一个 onlclick 事件