QListは何かと使っていたので簡単に使い方を忘れないようメモ。
ちなみに家の環境は、Qt5.9台で最新ではないです。
例)
QListクラスのlistにQStringで0~4をfor文、単体で追加、要素数をデバッグ表示、listの中身をデバッグで表示、最後に初期化してみて要素数を確認しました。
QList<QString> list; list = {}; qDebug("size=%d\n",list.size()); // listに0-4を追加 for(int i=0; i<5; i++){ list.append(QString::number(i)); } // 追加 list.append("5<-add"); qDebug("length=%d\n",list.length()); // 確認 for(int i=0; i<list.length(); i++){ qDebug("%s", qPrintable(list.at(i))); } // 初期化確認 list={}; qDebug("count=%d size=%d\n",list.count(), list.size());
出力結果
↓
size=0
length=6
0
1
2
3
4
5<-add
count=0 size=0
・要素数を返す
size()やlength()は何が違うのかなと思って確認しましたが、一緒らしいです。
以下3つ、どれもリストの要素数を返しています。
QList::length(); QList::size(); QList::count();
https://doc.qt.io/qt-5/qlist.html#size
・初期化
list = {}
すると要素数0になることが確認出来ました。
QList<int> list;
とすれば、intのlistとして宣言出来ます。
括弧の中を自作のクラスに指定すれば、自作クラスのリストにも出来ます。
・追加
appendで追加。
QList::append();
QVectorはresize()で初期化直後等に要素数を変更出来たと記憶しているのですが、QListではresize()が見当たらなかったです。
追加し続けるしかないのか私が知らないだけか……( ^ω^)?
QVector https://doc.qt.io/qt-5/qvector.html#resize
・取得
atで取得できますが、普通に配列[番号]でも取得出来ます。
list.at(要素番号)
list[要素番号]
その他
・空かどうか
リスト自体が空かどうか
bool empty() const
bool isEmpty() const
・リストの特定の要素が存在するか
各要素が存在するかどうか、exist()とかないかな?と思ったのですが今のところ見当たらなかったです。
現在の要素数を取得して、チェックするしかないかなと思いました。
当然リスト範囲外をatで取得しようとすると止まる。