社区
C++ 语言
帖子详情
bitset 的一个问题
soulmachine
2007-09-18 03:48:00
为什么这段代码在VC6.0下可以编译通过,而在MingW中会报错呢?
#include <iostream>
#include <bitset>
#include <string>
using namespace std;
int main(int argc, char *argv[])
{
bitset<14> temp(9999);
cout << temp.to_string() << endl;
return(0);
}
...全文
106
4
打赏
收藏
bitset 的一个问题
为什么这段代码在VC6.0下可以编译通过,而在MingW中会报错呢? #include #include #include using namespace std; int main(int argc, char *argv[]) { bitset temp(9999); cout << temp.to_string() << endl; return(0); }
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Vitin
2007-09-18
打赏
举报
回复
VC6 的to_string是不符合标准的,它的原型是:
string to_string() const
MingW(G++) 是符合标准的,它的原型是:
template<class _CharT, class _Traits, class _Alloc>
basic_string<_CharT, _Traits, _Alloc> to_string() const
VS2005 除了符合标准外,又做了一些扩展,并向下兼容了VC6.
所以LZ的程序在VC系列上可用,在其他编译器上无法保证.
FingerStyle
2007-09-18
打赏
举报
回复
为什么这段代码在VC6.0下可以编译通过
-------------------------------
汗。。 楼上的两位 -_-b..
星羽
2007-09-18
打赏
举报
回复
vc2005 是没问题的
taodm
2007-09-18
打赏
举报
回复
因为VC6不符合C++标准
cout << temp.to_string<char, char_traits<char>, allocator<char> >() << endl;
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
BITSET
C语言头文件
动态
Bitset
源代码
在C++的STL中实现由
一个
bitset
类模板,其用法如下: std::
bitset
bs; 也就是说,这个bs只能支持64位以内的位存储和操作;bs一旦定义就不能动态增长了。本资源附件中实现了
一个
动态
Bitset
,和标准
bitset
兼容。 /** @defgroup
Bitset
Bitset
位集类 * @{ */ //根据std::
bitset
改写,函数意义和std::
bitset
保持一致 class CORE_API
Bitset
: public Serializable { typedef typename uint32_t _Ty; static const int _Bitsperword = (CHAR_BIT * sizeof(_Ty)); _Ty * _Array; //最低位放在[0]位置,每位的默认值为0 int _Bits;//最大有效的Bit个数 private: int calculateWords()const; void tidy(_Ty _Wordval = 0); void trim(); _Ty getWord(size_t _Wpos)const; public: //默认构造
Bitset
(); //传入最大的位数,每位默认是0
Bitset
(int nBits); virtual ~
Bitset
(); //直接整数转化成二进制,赋值给
Bitset
,最高低放在[0]位置
Bitset
(unsigned long long _Val); //拷贝构造函数
Bitset
(const
Bitset
& b);
Bitset
(const char * str);
Bitset
(const std::string & str, size_t _Pos, size_t _Count); public: size_t size()const; //返回设置为1的位数 size_t count() const; bool subscript(size_t _Pos) const; bool get(size_t pos) const; //设置指定位置为0或1,true表示1,false表示0,如果pos大于数组长度,则自动扩展 void set(size_t _Pos, bool _Val = true); //将位数组转换成整数,最低位放在[0]位置 //例如数组中存放的1011,则返回13,而不是返回11 unsigned long long to_ullong() const; bool test(size_t _Pos) const; bool any() const; bool none() const; bool all() const; std::string to_string() const; public: //直接整数转化成二进制,赋值给
Bitset
,最高位放在[0]位置
Bitset
& operator = (const
Bitset
& b); //直接整数转化成二进制,赋值给
Bitset
,最高位放在[0]位置
Bitset
& operator = (unsigned long long ull); //返回指定位置的值,如果pos大于位数组长度,自动拓展 bool operator [] (const size_t pos); //测试两个
Bitset
是否相等 bool operator == (const
Bitset
& b); bool operator != (const
Bitset
& b);
Bitset
operator<>(size_t _Pos) const; bool operator > (const
Bitset
& c)const; bool operator < (const
Bitset
& c)const;
Bitset
& operator &=(const
Bitset
& _Right);
Bitset
& operator|=(const
Bitset
& _Right);
Bitset
& operator^=(const
Bitset
& _Right);
Bitset
& operator<>=(size_t _Pos); public:
Bitset
& flip(size_t _Pos);
Bitset
& flip(); //将高位与低位互相,如数组存放的是1011,则本函数执行后为1101
Bitset
& reverse(); //返回左边n位,构成新的
Bitset
Bitset
left(size_t n) const; //返回右边n位,构成新的
Bitset
Bitset
right(size_t n) const; //判断b包含的位数组是否是本类的位数组的自串,如果是返回开始位置 size_t find (const
Bitset
& b) const; size_t find(unsigned long long & b) const; size_t find(const char * b) const; size_t find(const std::string & b) const; //判断本类的位数组是否是b的前缀 bool is_prefix(unsigned long long & b) const; bool is_prefix(const char * b) const; bool is_prefix(const std::string & b) const; bool is_prefix(const
Bitset
& b) const; void clear(); void resize(size_t newSize); void reset(const unsigned char * flags, size_t s); void reset(unsigned long long _Val); void reset(const char * _Str); void reset(const std::string & _Str, size_t _Pos, size_t _Count); //左移动n位,返回新的
Bitset
//extendBits=false "1101" 左移动2位 "0100"; //extendBits=true "1101" 左移动2位 "110100";
Bitset
leftShift(size_t n,bool extendBits=false)const; //右移动n位,返回新的
Bitset
//extendBits=false "1101" 右移动2位 "0011"; //extendBits=true "1101" 右移动2位 "001101";
Bitset
rightShift(size_t n, bool extendBits = false) const; public: virtual uint32_t getByteArraySize(); // returns the size of the required byte array. virtual void loadFromByteArray(const unsigned char * data); // load this object using the byte array. virtual void storeToByteArray(unsigned char ** data, uint32_t& length) ; // store this object in the byte array. };
对java的
BitSet
的多线程并发的探索
NULL 博文链接:https://huangyunbin.iteye.com/blog/2194731
可以动态扩展的
bitset
文档模仿STL库的
BITSET
写的
一个
bitset
,但是和STL不同的是这个类是
一个
可以动态扩展的,使用方法和STL的类似,可以参考STL使用
java 原生包
BitSet
源码
Java 原生包
BitSet
源码,0~3年 Java 工程师必看,属于高级数据结构,利于进阶,面试必备!
C++ 语言
65,210
社区成员
250,518
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章