在C+中存储表的最佳方式是什么+; 我用C++的一个稍微修改的版本编程C++中的决策树。每个节点表示数据集的一个属性或一列,并且每个属性的可能值都有一个子节点

在C+中存储表的最佳方式是什么+; 我用C++的一个稍微修改的版本编程C++中的决策树。每个节点表示数据集的一个属性或一列,并且每个属性的可能值都有一个子节点,c++,data-structures,decision-tree,C++,Data Structures,Decision Tree,我的问题是如何存储训练数据集,因为我必须为每个节点使用一个子集,所以我需要一种只选择行和列的子集的快速方法 主要目标是尽可能在内存和时间效率最高的情况下完成(按优先级顺序) 我认为最好的方法是有一个数组(或std::vector)或类似的东西,每个节点都有一个列表(数组、向量等)或一些对该节点有效的列、行(可能是元组)对 我现在应该有更好的方法,有什么建议吗 更新:我需要的是这样的东西: Paris 4 5.0 True New York 7 1.3 True To

我的问题是如何存储训练数据集,因为我必须为每个节点使用一个子集,所以我需要一种只选择行和列的子集的快速方法

主要目标是尽可能在内存和时间效率最高的情况下完成(按优先级顺序)

我认为最好的方法是有一个数组(或std::vector)或类似的东西,每个节点都有一个列表(数组、向量等)或一些对该节点有效的
列、行(可能是元组)对

我现在应该有更好的方法,有什么建议吗

更新:我需要的是这样的东西:

Paris    4    5.0    True
New York 7    1.3    True
Tokio    2    9.1    False
Paris    9    6.8    True
Tokio    0    8.4    False
开始时,我有以下数据:

Paris    4    5.0    True
New York 7    1.3    True
Tokio    2    9.1    False
Paris    9    6.8    True
Tokio    0    8.4    False
Paris    4    5.0
New York 7    1.3
Paris    9    6.8
但对于第二个节点,我只需要以下数据:

Paris    4    5.0    True
New York 7    1.3    True
Tokio    2    9.1    False
Paris    9    6.8    True
Tokio    0    8.4    False
Paris    4    5.0
New York 7    1.3
Paris    9    6.8
对于第三个节点:

Tokio    2    9.1
Tokio    0    8.4
但是有一个包含数百万条记录的表,最多有数百列

我想到的是将所有数据保存在一个矩阵中,然后为每个节点保存当前列和行的信息。大概是这样的:

Paris    4    5.0    True
New York 7    1.3    True
Tokio    2    9.1    False
Paris    9    6.8    True
Tokio    0    8.4    False
节点2:

columns = [0,1,2]
rows = [0,1,3]
节点3:

columns = [0,1,2]
rows = [2,4]
这样在最坏的情况下我只能浪费时间

size_of(int) * (number_of_columns + number_of_rows) * node
这比每个节点都有一个独立的数据矩阵要少得多。

在trie中使用如何:

还讨论了如何实施trie:
在C++中,总是在数组之前思考。@ JoaCHIMPILBOG是的,我几乎总是这样做,但是我从来没有使用向量向量,所以我不确定这是不是一个好主意。为什么C5.0算法?@ Eutho.Tiib,我看到C5算法只是有一些内存效率增强,它并没有真正生成比C4.5或其前身ID3算法更好的决策树。您能详细介绍一下如何使用trie来表示数据表吗?