这篇文章写一下大神们讨论出来的另一种设计。(虽然他们说我写出来又和他们原来的意思稍有不同。。。就当抛砖引玉找思路吧- -)
enum DataType {floatType, stringType};
struct Row {
void** data;
Row* next;
};
struct Column {
DataType type;
int length;
bool allowNull;
char* name;
Column* next;
};
struct Table{
char* name;
Row* rowHead;
Column* columnHead;
int columnCount;
Table* next;
};
这样的设计实现起来方便不少,占用空间更少,目测时间上也更快,唯一的缺点大概是不支持增加新的列(当然你也可以选择浪费空间开一个大数组,或者把动态数组改成链表结构),但是既然项目不要求就从简吧!
enum DataType {floatType, stringType};
enum声明的是枚举类型,表示DataType只能取floatType或stringType中的一个。
当然也可以不用枚举类型,简单的用一个int来存储,比如0代表float型,1代表string型,但这样代码的可读性就明显下降了。
void*是可以指向任意数据类型的指针,项目中我们的void*可能指向一个float(如grade=90)或char*(如name="aaa")。
而void**可以理解为void*的数组