在QMap中嵌套QList

刚接触QT的QMap比较困惑,看这名字以为是二维数组

因为我把QList当作一维数组来用了,事实上也确实可以,但只当一维数组太浪费了。可参考别的资料

[cpp] view plain copy
  1. QMap > panelStatistics;  
  2.     QList panelInfo;  
  3.     panelInfo.push_back("0102");  
  4.     panelInfo.push_back("1253");  
  5.     panelInfo.push_back("1256");  
  6.     panelStatistics.insert("面板1", panelInfo);  
  7.   
  8.     QMap >::iterator it;  
  9.     for(it = panelStatistics.begin(); it != panelStatistics.end(); ++it)  
  10.     {  
  11.             QList tmp = it.value();  
  12.             qDebug()<" "<< tmp[0] <<" "<< tmp[1] <<" "<< tmp[2];  
  13.     }  

如果你和我一样,非得把QMap用成二维数组

那么你这可这样

[cpp] view plain copy
  1. //在初始化的时候这样  
  2. QMap<int, QList > tableDate;  
  3. QList tmp;  
  4. for(int i = 0; i < 10; i ++)  
  5. {  
  6.     tmp.clear();  
  7.     tmp.push_back("monday in row"   + QString::number(i));  
  8.     tmp.push_back("tuesday in row"  + QString::number(i));  
  9.     tmp.push_back("wensday in row"  + QString::number(i));  
  10.     tmp.push_back("thursday in row" + QString::number(i));  
  11.     tmp.push_back("friday in row"   + QString::number(i));  
  12.     tmp.push_back("sateday in row"  + QString::number(i));  
  13.     tmp.push_back("sunday in row"   + QString::number(i));  
  14.     tableDate.insert(i, tmp);  
  15. }  
  16. //取值可以这样  
  17. QList result;  
  18. result = tableDate.value(3);  
  19. for(int i = 0; i < reslut.length; i ++)  
  20. {  
  21.     qDebug() << result[i] + " ";  
  22. }  

你还可以这样,类似于数据库操作一样

[cpp] view plain copy
  1. QMapIterator<int, QList > iter(tableDate);  
  2. QList whatDate;  
  3. while(iter.hasNext())  
  4. {  
  5.     iter.next();  
  6.     if(whatDate = iter.value())  
  7.     {  
  8.         qDebug() << whatDate[0];  
  9.         qDebug() << whatDate[1];  
  10.         qDebug() << whatDate[2];  
  11.         qDebug() << whatDate[3];  
  12.     }  

FROM:  http://blog.csdn.net/conquerwave/article/details/46453299



QMap如何以QList作为键值


在开发中常会用到比较复杂的容器时,QMap QList会嵌套使用. 在VC6中定义 QMap> map,编译时老报map未定义的错误. 

     这是因为VC把>>当作一操作符了,以为map是一变量,所以编译出错. 我们重新命名一下就能解决这个问题.      

Cpp代码   收藏代码
  1. // 方法一,起别名  
  2. typedef QList HisDataList;  
  3. QMap map;   
  4.   
  5. // 方法二, 在QList<>类型后加一空格   
  6. QMap > map; 

from: http://blog.csdn.net/xiaozhu2hao/article/details/43730333、




QVector QList QMap 复杂容器使用

在开发中常会用到比较复杂的容器时,QMap QList会嵌套使用. 在VC6中定义 QMap> map,编译时老报map未定义的错误. 

     这是因为VC把>>当作一操作符了,以为map是一变量,所以编译出错. 我们重新命名一下就能解决这个问题.     

 

Cpp代码   收藏代码
  1. // 方法一,起别名  
  2. typedef QList HisDataList;  
  3. QMap map;   
  4.   
  5. // 方法二, 在QList<>类型后加一空格   
  6. QMap > map; 

FROM: http://blog.csdn.net/lanshengsheng2012/article/details/40918505




你可能感兴趣的:(QT/数据类型)