陣列查詢表生成工具

2021-08-19 21:35:50 字數 1274 閱讀 7771

用來生成資料查詢表,比如 要快速找到點p(x,y)的周圍n個點,我們需要計算出這些點的下標,但其實這些可以預先計算好,通過查表來完成的。

好吧,其實是某**裡有這個,但是查詢表檔案不見了,於是自己做了乙個生成工具,也不複雜

**如下:

#include #include using namespace std;

// 獲取距目標點distance遠的一圈點的邊長

inline int getsidelen(int distance)

// 獲取矩形一圈的長度

int getrectlen(int sidelen)

struct point;

int main()

int sideidx = idx / l2;

int mod = idx % l2;

point point;

switch (sideidx)

table[tableidx] = point;

cout << "距離:" << i << ", 內部序號:" << idx << ", x:" << (int)point.x << ", y:" << (int)point.y << endl;

++tableidx;

}cout << endl;

} }end:

ofstream of("searchtable.tbl");

of.write((const char*)table, len*2);

of.flush();

of.close();

ofstream of2("searchtable.txt");

for (int i = 0; i < len; i++)

of2.flush();

of2.close();

system("pause");

return 0;

}

測試可用:

那怎麼用呢:

比如要找p點周圍100個點:

for(int i=0;i<100;i++)

int x = p.x + table[i].x;

int y = p.y + table[i].y;

point temp = map[x,y];

這樣就找到了對應的點temp了

事實上,查詢表的順序是從中心一圈一圈的繞出去的,記錄每個點相對中心的位置。

Oracle動態生成查詢交叉表

表結構 序號字段 中文名稱 型別 說 明 1 reportid number 4 報告編號 2 recordno number 記錄號 3 fieldno number 2 字段編號 4 datum varchar 200 值 reportid recordno fieldno datum 1 1 ...

MySQL使用查詢結果生成臨時表

mysql中不支援對同乙個表使用其查詢結果更新or刪除本表內資料 也就是update或delete後的where條件為針對相同表的select 解決方案是建立臨時表做過度儲存中間資料 可以直接使用查詢結果來形成臨時表 sql create table tmp as select column1 as...

如何查詢兩個陣列表

算是一次更深一些的思考吧,對於查資料表,通常都只有乙個 如果翻看資料手冊,就會看到資料表中對應的數值只是乙個典型值,而實際情況是感測器的值必定會在某個範圍內波動,對應乙個上限值和乙個下限值。通常使用這個典型值就可以了,方法就是這篇部落格 但如果需要查詢兩個資料表,分別是上限表和下限表,那該怎麼辦呢?...