memo

プログラミング備忘録





【Qt】QList備忘録

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で取得しようとすると止まる。


参考:
https://doc.qt.io/qt-5/qlist.html