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