Qt学習——容器類QListとQMap
ここでコンテナクラスはC++やJavaのコンテナクラスとあまり差がなく、主にどんな使い方を見ていますか.ここにはコードを貼るだけで、解析はしません.
1.QList用法:
なお、Tは、intやdoubleなどの基本数値タイプとQtのデータ型(例えばQString、Qdate、QTimeなど)のみを含む.QtのQObjectおよび他のサブクラス(例えばQWidgetやQDidialogなど)は、コンテナクラスに格納できない.代替案は、QObjectおよびそのサブクラスを格納するポインタ(例えばQListlist;).
2.QMapの使い方:
これは使いやすいので、keyに基づいてvalueをクエリーすることができます.普段のプログラミングではこれとリストをよく使います.
3.他の容器類もあります.
例えばQHash,QQQueue,QLinkedList,QVector,QStackなどである.後で使ってから詳しく見ましょう.私が書いたテストコードは以下の通りです.
実行結果:
1.QList
なお、Tは、intやdoubleなどの基本数値タイプとQtのデータ型(例えばQString、Qdate、QTimeなど)のみを含む.QtのQObjectおよび他のサブクラス(例えばQWidgetやQDidialogなど)は、コンテナクラスに格納できない.代替案は、QObjectおよびそのサブクラスを格納するポインタ(例えばQList
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"