構文の一番最後のreturn文の意味が分かりません。
また、CHAR_BITSは定数8でよいでしょうか?
お忙しいかと存じますが、ご回答のほどよろしくお願い申し上げます。
・ ・ ・ template<> class Array<bool>{ typedef unsigned char BYTE; static cinst int CHAR_BITS = std::numeric_limits<unsigned char>::digits; int nelem; //bool型配列の要素数 int velem; //bool型配列を格納するためのBYTE型配列の要素数 BYTE* vec; //BYTE型先頭要素へのポインタ static int size_of(int sz){return(sz + CHAR_BITS -1)/CHAR_BITS;} } ・ ・ ・ //明示的コンストラクタ explicit Array(int sz, bool v = bool()) : nelem(sz), velem(size_of(sz)){ vec = new BYTE[velem]; for(int i=0; i<velem; i++) //全要素を初期化 vec[i] = v; } ・ ・ ・ bool operator[](int i) const{ if(i<0 || i >=nelem) throw IdxRngErrr(this i); return(vec[i / CHAR_BITS] >> (i & (CHAR_BITS - 1)) & 1U) == 1; }
回答1件
あなたの回答
tips
プレビュー