2015-09-03 53 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")));