• 7215阅读
  • 12回复

QT中能创建QMap数组吗? [复制链接]

上一主题 下一主题
离线celerylxq
 

只看楼主 倒序阅读 楼主  发表于: 2015-09-17
各位大神,问个问题,程序中需要用到N个QMap容器,请问是否能创建容器数组?
离线yanwuyue

只看该作者 1楼 发表于: 2015-09-17
可以,或者用qt的方法
Qlist<Qmap<xxx,xxx>>
离线tylan

只看该作者 2楼 发表于: 2015-09-17
QList<QMap<key,value> >
离线celerylxq

只看该作者 3楼 发表于: 2015-09-18
回 tylan 的帖子
tylan:QList<QMap<key,value> > (2015-09-17 22:18) 

还可以用结构体
struct SFuncData
        {
            int m_iRegCount;            //缓存区长度
            QMap<QString, QVariant> pearMap;
        };
     SFuncData m_FuncData[FuncDataNum];
离线tylan

只看该作者 4楼 发表于: 2015-09-18
回 celerylxq 的帖子
celerylxq:还可以用结构体[表情]
struct SFuncData
        {
            int m_iRegCount;            //缓存区长 .. (2015-09-18 10:33) 

方法很多了。
离线celerylxq

只看该作者 5楼 发表于: 2015-09-18
回 yanwuyue 的帖子
yanwuyue:可以,或者用qt的方法
Qlist<Qmap<xxx,xxx>> (2015-09-17 18:45) 

忽然想试试这个方法,可是这种方法咋个赋值?咋个取值呢?
离线yanwuyue

只看该作者 6楼 发表于: 2015-09-21
回 celerylxq 的帖子
celerylxq:忽然想试试这个方法,可是这种方法咋个赋值?咋个取值呢? (2015-09-18 13:51) 

Qlist<Qmap<int,int>> ls;
Qmap<int,int> m1;
Qmap<int,int> m2;
ls<<m1<<m2;

ls.at(0).insert(0,0);//m1增加key=0,value=0
离线roywillow

只看该作者 7楼 发表于: 2015-09-21
回 yanwuyue 的帖子
yanwuyue:Qlist<Qmap<int,int>> ls;
Qmap<int,int> m1;
Qmap<int,int> m2;
ls<<m1<<m2;
....... (2015-09-21 00:00) 

我觉得这么访问list肯定不行的哦,at()返回的我记得是个const ref吧,不能直接进行修改的,或者修改的并不是容器中元素的值而只是修改了一个拷贝,对原值无影响
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线roywillow

只看该作者 8楼 发表于: 2015-09-21
回 celerylxq 的帖子
celerylxq:忽然想试试这个方法,可是这种方法咋个赋值?咋个取值呢? (2015-09-18 13:51) 

容器套容器需要注意的是返回的引用问题
一般容器返回的是引用或者拷贝,修改元素一般是用新的元素去replace,有时候还挺绕的。比如可能就需要拷贝一个新的QMap去修改里面的值,然后用新的QMap去替换原来的元素。
当然如果用QList的[]运算可能会方便一些吧。
专业维修核潜艇,回收二手航母、二手航天飞机,大修核反应堆,拆洗导弹发动机更换机油,无人侦察机手动挡改自动,航天飞机保养换三滤,飞碟外太空年检 ,各型号导弹加装迎宾踏板,高空作业擦洗卫星表面除尘、打蜡及抛光,东风全系列巡航导弹。并提供原子对撞机。量大从优,有正规发票。
离线yanwuyue

只看该作者 9楼 发表于: 2015-09-26
回 roywillow 的帖子
roywillow:我觉得这么访问list肯定不行的哦,at()返回的我记得是个const ref吧,不能直接进行修改的,或者修改的并不是容器中元素的值而只是修改了一个拷贝,对原值无影响 (2015-09-21 13:08) 

是的,at()是const的
修改值要用数组的方式ls[0]
只读时用ls.at(0),这样速度快
离线yanwuyue

只看该作者 10楼 发表于: 2015-09-26
回 roywillow 的帖子
roywillow:我觉得这么访问list肯定不行的哦,at()返回的我记得是个const ref吧,不能直接进行修改的,或者修改的并不是容器中元素的值而只是修改了一个拷贝,对原值无影响 (2015-09-21 13:08) 

一下子没反应过来,失误了
离线z55716368

只看该作者 11楼 发表于: 2015-09-26
       一直对at和[]的用法不是太熟悉 今天搞懂了 谢谢
每一个问题 都是一次进步
离线celerylxq

只看该作者 12楼 发表于: 2015-10-15
回 yanwuyue 的帖子
yanwuyue:Qlist<Qmap<int,int>> ls;
Qmap<int,int> m1;
Qmap<int,int> m2;
ls<<m1<<m2;
....... (2015-09-21 00:00) 

非常感谢,长知识了,不过还是感觉这种方式调用起来不如数组的方便
快速回复
限100 字节
 
上一个 下一个