map嵌套map
现在有个表需要4个索引才能唯一确定一个记录。
我使用的是map嵌套map。
但是有一句话,如下
《Effective C++》中提到:容器容纳了对象,但不是你给它们的那个对象。此外,当你从容器中获取一个对象时,你所得到的对象不是容器里的那个对象。当你向容器中添加一个对象(比如通过insert或push_back等),进入容器的是你指定的对象的拷贝。因此应该让容器里对象的拷贝操作轻量而行。
那我每次索引到一层的值,都要进行拷贝,效率会后太低。
或者是把map的值改为指针。
大家意见??
//总表,用于存放用户使用软件的行为,更新数据库时就是根据这个表更新的。
typedef struct
{
ID idChan;//视频ID
char chanName[50];//视频名
UINT timelen;//视频时长
char filePath[100];//还原后的视频文件路径
UINT contentLen;//视频文件大小
}chanInfo;
//同一用户,同一使用软件行为,视频信息表
typedef map<idChan , chanInfo> chanInfoMap;
typedef struct
{
ID idAct;//使用软件行为ID
ID maxIdChan;//同一使用软件行为下的当前最大idChan
time_t startTime;//使用软件开始时间
time_t endTime;// 使用软件结束时间
chanInfoMap ciMap;
}actInfo;
//同一用户,使用同一软件,不同使用软件行为,行为信息表
typedef map<idAct , actInfo > actInfoMap;
typedef struct
{
ID idSoftware;//使用软件标识ID
ID maxIdAct;//当前软件标识下,最大的使用软件行为ID
actInfoMap aiMap;
}softwareInfo;
//同一用户,使用不同软件,行为信息表
typedef map< idSoftware, softwareInfo > softwareInfoMap;
typedef struct
{
ID idIP;//用户IP编号
char strIP[16];//用户IP(字符串型,如xxx.xxx.xxx.xxx)
char strID[20];//用户帐号
softwareInfoMap siMap;
}userAction;
//不同用户,用户行为表
typedef map<idIP , userAction>userActionMap;
//用户行为表
userActionMap MUserAction;