Qt学習——容器類QListとQMap


ここでコンテナクラスはC++やJavaのコンテナクラスとあまり差がなく、主にどんな使い方を見ていますか.ここにはコードを貼るだけで、解析はしません.
1.QList用法:
なお、Tは、intやdoubleなどの基本数値タイプとQtのデータ型(例えばQString、Qdate、QTimeなど)のみを含む.QtのQObjectおよび他のサブクラス(例えばQWidgetやQDidialogなど)は、コンテナクラスに格納できない.代替案は、QObjectおよびそのサブクラスを格納するポインタ(例えばQListlist;). 
QList<int> list; 
list<<1<<2<<3<<4<<5;
QList<int>::iterator i;
for(i=list.begin();i!=list.end();++i) 
{ 
    qDebug()<<(*i); 
    *i=(*i)+10; 
} 
  

2.QMapの使い方:
 
これは使いやすいので、keyに基づいてvalueをクエリーすることができます.普段のプログラミングではこれとリストをよく使います.
QMap<QString,QString> map;  
map.insert("beijing","111");  
map.insert("shanghai","021");  
map.insert("jinan","0531");  
QMap<QString,QString>::iterator i;  
for(i=map.begin();i!=map.end();++i)  
{ 
     qDebug()<<i.key()<<" "<<i.value();  
}  
i=map.find("beijing");  
if(i!=map.end()) 
i.value()="010";

3.他の容器類もあります.
例えばQHash,QQQueue,QLinkedList,QVector,QStackなどである.後で使ってから詳しく見ましょう.私が書いたテストコードは以下の通りです.
#include <QDebug>
int main()
{
    QList<int> list;
    list<<1<<2<<3<<4<<5;
    QList<int>::iterator i;
    for(i=list.begin();i!=list.end();++i)
    {
	qDebug()<<(*i);
	*i=(*i)+10;
    }
    QMap<QString,QString> map;
    map.insert("beijing","111");
    map.insert("shanghai","021");
    map.insert("jinan","0531");
    QMap<QString,QString>::iterator ii;
    for(ii=map.begin();ii!=map.end();++ii)
    {
        qDebug()<<ii.key()<<" "<<ii.value();
    }
    ii=map.find("beijing");
    if(ii!=map.end())
        ii.value()="010";
    return 0;
}

実行結果:
1
2
3
4
5
"beijing" "111"
"jinan" "0531"
"shanghai" "021"