所以我正在上暑期 OO 课程,明天我们将围绕这个项目进行测试。基本上,我们需要创建一个包含未指定位数的数组,并编写四个对该数组执行操作的函数- Set() //set bit with given index to 1
、和。Unset() //set bit with given index to 0
Flip() // change bit (with given index)
Query() // return true if the given bit is set to 1, false otherwise
如果有人感兴趣,这里有一个完整的描述:http: //pastebin.com/v7BCCYjh和一些示例运行: http: //pastebin.com/1ijh5p7p
我遇到的问题是高级概念。我很确定我们打算在数组的每个索引中存储位的字节表示。如果这是真的,那么我完全不知道如何实现这些功能。如果有人能给我一些关于如何解决这个问题的指示(我需要在今晚之前对它有一个很好的理解,因为我必须为明天的期中写一些伪代码)我会非常非常感激。
.h
如果有帮助,这是我的
// bitarray.h
//
// BitArray class declaration
#ifndef _BITARRAY_H
#define _BITARRAY_H
#include <iostream>
using namespace std;
class BitArray
{
friend ostream& operator<< (ostream& os, const BitArray& a);
friend bool operator== (const BitArray&, const BitArray&);
friend bool operator!= (const BitArray&, const BitArray&);
public:
BitArray(unsigned int n); // Construct an array that can handle n bits
BitArray(const BitArray&); // copy constructor
~BitArray(); // destructor
BitArray& operator= (const BitArray& a); // assignment operator
unsigned int Length() const; // return number of bits in bitarray
void Set (unsigned int index); // set bit with given index to 1
void Unset (unsigned int index); // set bit with given index to 0
void Flip (unsigned int index); // change bit (with given index)
bool Query (unsigned int index) const; // return true if the given bit
// is set to 1, false otherwise
private:
unsigned char* barray; // pointer to the bit array
int arraySize;
};
#endif
还有我的构造函数:
BitArray::BitArray(unsigned int n){
int size = sizeof(char);
if(n%(8*size) != 0)
arraySize = ((n/(8*size))+1);
else
arraySize = n/(8*size);
barray = new unsigned char[arraySize];
for(int i = 0; i < arraySize; i++)
barray[i] = 0;
}