接上文:
要求是创建索引结构(如B+树)实现快速搜索,不过我不会。。。
这里只存储了一个带位置的索引文件以供后续检索。
数据结构:
/* data */
int64_t id; //数据的ID
int64_t property[PRO_NUM]; //数据的100个属性
int file_len; //文件总长度
vector<int> fast_search; //对哪些属性创建了索引文件。存成变量下次用就不得行,所以可以写个存成文件的一劳永逸,但是我懒得写。就这样吧。
寻找哪些行的某个属性有在范围内:
分为:有索引文件可供查找和无索引文件查找两种情况。
有索引文件则读取索引文件中存储的相对位置,通过相对位置查找。
无索引文件查找则见上文,且在查找结束后创建索引文件。
vector<int> FindData(int property_num, int64_t min, int64_t max){
vector<int> row;
vector<int> ret_row; //创建需要返回的行向量vector
//打开本地的表文件
ifstream infile;
infile.open("data_storage.txt", ios::in); //打开模式