2015-09-03 92 views
-6

我需要創建一個數據結構,我迄今創建了一個簡單的表,由4個不同的向量表示變量組成。變量類型,布爾結果和PKB輸出。我知道這不是最好的方法,但我打算使用索引插入和檢索。但是,我遇到查詢ID問題,因爲我期望使用getMethods來檢索信息。我需要找到一種比索引運行更順暢的方式來檢索信息。檢索過程將通過一批查詢ID進行。要求建議,新的C++

我是新來的Cplusplus,我不知道什麼數據結構或我如何解決它。我並不期待直接回答,但一個建議就足夠了。我可能從未聽過的名字。如果你有一步一步的指導,這將是最好的。

---查詢ID ---- ---變量變量類型---布爾結果---- PKB輸出

---- ----------- 1 -------- x -----賦值-----------真----------- null ---------- --------------------------------------- 1 ---------- --------- w ---------- ---------- while -------------- false ---------- null - ----------------------------------------------- 1 - ---------------- ifstat ----------- if ------------- ---- false --- - ----- null ------------------------------------------ ------ 2 ------------------- x ------賦值-----------假---- - - - 空值 - - - - - - - - - - - - - - - - - - - - - - -

+1

如果你想找到一個特定查詢ID一些數據,你需要或者有一個數組(在計算科學意義上的)通過ID編號,或者使用關聯容器。 C++爲靈活調整大小的數組管理提供了'std :: vector',並且可以使用'std :: map'作爲通用關聯容器。 「如果你有一步一步的指導,那麼最好」 - 你可以搜索關於這些標準庫類型的教程以及如何使用它們,這在S.O.中很詳細。回答,並且對離線資源的請求是無關緊要的。 –

+0

該圖應該是什麼?請以可讀格式發佈。粘貼格式化的圖,用鼠標標記,然後點擊'{}'工具或鍵入Ctl-k將其標記爲文字代碼。 – Barmar

+0

'std :: map'或'std :: unordered_map'似乎是你正在尋找的東西 – john

回答

0

我不認爲我完全理解這個問題。但我認爲你使用包含向量def的標準庫,這意味着你將不得不使用該std的getter和setter。我只是用一個快速搜索算法來創建一個函數,該算法使用已經在向量中定義的getter。

1

從我理解的閱讀你的問題,你可以使用std::multimap使用intstruct。例如

// C++11 for nullptr 
#include <string> 
#include <map> 

struct Data { 
    std::string variable; 
    std::string variableType; 
    bool  result; 
    PKB   output; // I suppose PKB is an already defined type 

    Data(std::string var, std::string varType, bool res = false, PKB out = nullptr) : 
     variable(var), variableType(varType), result(res), output(out) {} 

    inline bool operator <(const Data & rhs) { 
     . . . // Add your own comparison logic 
    } 
}; 

std::multimap<int, Data> myMap; 
myMap.insert((1, Data("x", "assignment", true))); 
myMap.insert((1, Data("w", "while"))); 
myMap.insert((1, Data("ifstat", "if"))); 
myMap.insert((2, Data("x", "assignment")));