从一个流里接收不断数据,数据项有很多,我只其中两项,我假设其中一个是类型Type,一个是数据值Value,一个类型下面有很多值,而类型只有几个。因为我不知道有多少数据和类型,我原先设计是用两个向量vector分别接收Type和Value。
但我要全部的数据接收完成之后再将其转为CTreeCtrl,将Type做成根结点,Value做成其下的子结点。
后来我又想用一个数据结构和一个向量表示,如下:
struct{Type,Value},vector<struct>
但好像转为CTreeCtrl时要比较值,也麻烦,有没有更好的实现方式?征集一下大家的意见,请不吝指教!
但我要全部的数据接收完成之后再将其转为CTreeCtrl,将Type做成根结点,Value做成其下的子结点。
后来我又想用一个数据结构和一个向量表示,如下:
struct{Type,Value},vector<struct>
但好像转为CTreeCtrl时要比较值,也麻烦,有没有更好的实现方式?征集一下大家的意见,请不吝指教!
从一个函数里接收一个结构体数据,我从结构体里面需要三项数据,我这里假设这三项为Type,SubType,Value.
这个函数是网络应答的函数,所以每次发一个结构体来,我就取上面三项的数据。可能有几个Type,而一个Type下面可能对应几个SubType,一个SubType下面对应几个Value。
现在的问题是,我要用一个数据结构来存储我所说的三项数据,当我全部接收完成之后,我把这数据组织成树结构形式,如下:
Type
SubType
Value
Value
SubType
Value
Value
...
Type2
SubType2
Value2
....
应该怎样设计?
{
int subType;
std::vector<int> valueArray;
};struct TypeValue
{
int type;
std::vector<SubTypeValue> valueArray;
};接收到的是TypeValue结构
里面包含一个类型type和一组SubTypeValue,
每个SubTypeValue中则包括了子类型及其任意多个数据。
列1 下级 级别
Type SubType 1级
... ... ..
SubType Value 2级
..... .... ...
Value 无 3级 //把Value 看作 SubType 的子
实现
struct{列1,列2,列3},vector<struct> s建立树时 先找出级别1级别然后2级,然后3级的...
为减少比较次数,可以
分成3个vectorvector1 存储 Type
vector2 存储 Type 和 SubType
vector2 存储 SubType 和 Value
构造树时
1级取vector1 构造2级时查找 vecot2
三级查找 vector3等
{
int type;
int value;
};struct TypeValue
{
int type;
std::vector<SubTypeValue> array;
};
这个不知如何?
我编程有时不大计较时间。对小数据量,以简便为主。
struct TypeValue
{
int type;
std::vector<SubTypeValue*> valueArray;
};
对于体积较大的类或结构,使用指针数组较好。题外话:
为了安全,建议做一个指针数组派生类:
class SubTypeValyeArray : public std::vector<SubTypeValue*>
{
};
struct TypeValue
{
int type;
SubTypeValyeArray valueArray;
};
将new、delete等操作封装在这个派生类中,当SubTypeValyeArray析构时,delete每一元素指针。
我是专门做了一个模板类。