map嵌套map

buleideli 2009-04-24 11:58:30
现在有个表需要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;
...全文
935 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
nickyjay0501 2009-04-25
  • 打赏
  • 举报
回复
改为指针吧~~~

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧