template <class t> bitset<T>& bitset<t> /求集合this与R的交 operator *(const bitSet<T>& r)i assert(vector Size ==R vector Size); bitset temp(setsize for(int 1=0; 1< vector Size; 1++) temp. bit Vector[i]=bit Vector&r bit Vector[ return temp;∥按位求“与”,由temp返回
template <class T> bitSet<T>& bitSet<T>:: //求集合this与R的交 operator * (const bitSet<T>& R) { assert (vectorSize == R.vectorSize); bitSet temp (setSize); for (int i = 0; i < vectorSize; i++) temp.bitVector[i] = bitVector[i] & R.bitVector[i]; return temp; //按位求“与”, 由temp返回 }; 16
template <class t> bitset<t>& bitset<t> /求集合this与R的差 operator -(const bitSet<T>&r)i assert(vector Size ==R vectorIze bitSet temp(setsize) for(int 1=0; 1< vector Size; 1++) temp. bit Vector1= bit Vector[i] &(R bit Vector[) return temp ∥/第三个集合返回 17
template <class T> bitSet<T>& bitSet<T>:: //求集合this与R的差 operator - (const bitSet<T>& R) { assert (vectorSize == R.vectorSize); bitSet temp (setSize); for (int i = 0; i < vectorSize; i++) temp.bitVector[i] = bitVector[i] & (~R.bitVector[i]); return temp; //由第三个集合返回 }; 17
集合的并this01110000110 R[00100101010 tempO110101110 集合的交this01110000110 R0010001010 tenp00100000010 集合的差this[o10000110 R[00100101010 temp[o1o10000100
18 this R temp 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 1 0 1 1 1 0 this R temp 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 0 1 0 0 0 0 0 0 1 0 this R temp 0 1 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 集合的并 集合的交 集合的差
template <class t> bool bitset<t>:: subSet(bitset<t>&rii /判th是否R的子集 assert(setsize ==R setsize) for(inti=0;i< vector Size;i++)∥按位判断 if(bit Vector[i] &(r bit Vector iD) return false; return true; is00111010110 R00 000000000
template <class T> bool bitSet<T>::subSet (bitSet<T>& R) { //判this是否R的子集 assert (setSize == R.setSize); for (int i = 0; i < vectorSize; i++) //按位判断 if (bitVector[i] & (~R.bitVector[i])) return false; return true; }; 19 this R 0 0 1 1 1 0 1 0 1 1 0 0 0 1 1 1 0 0 1 0 1 0 1 1 0 0 0 1 1 0 1 0 1
template <class t> bool bitSet<T>:: operator==(bitSet<T>&r)i /判集合this与R相等 if (vector Size !=R vector Size)return false, for(int i=0; 1< vectorIze; 1++) if(bit Vector1!=R bit vector1] return false: return true, 应位全部相等 this00110000110 R00100101010
template <class T> bool bitSet<T>::operator == (bitSet<T>& R) { //判集合this与R相等 if (vectorSize != R.vectorSize) return false; for (int i = 0; i < vectorSize; i++) if (bitVector[i] != R.bitVector[i]) return false; return true; //对应位全部相等 }; 20 this R 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 i