(Qt6 : 13-1) qDeleteAll

Posted by : at

Category : Qt


  • qDeleteAll : Qt에서 지원하는 Algorithm 동적할당 삭제
#include <QCoreApplication>
#include <QDebug>
#include <QList>
#include "test.h"

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QList<Test*> list;
    for(int i = 0; i < 10; i++)
    {
        Test *t = new Test(); //no parent, no smart pointer
        t->setObjectName(QString::number(i));
        list.append(t);

    }

    qInfo() << list.at(0);

    qDeleteAll(list);
    qInfo() << "Count: " << list.count();

   // qInfo() << list.at(0); //Will crash
    qInfo() << "Clearing...";
    list.clear();

    qInfo() << "Count: " << list.count();

    return a.exec();
}

추가) 그럼 qFill은 없나?

결론부터 말하면 쓰지말자, 차라리 std::fill을 쓰자

#include <QCoreApplication>
#include <QDebug>
#include <QList>
#include <QtAlgorithms>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QList<int> list;
    list << 1 << 2 << 3 << 4;

   // qFill() = do not use

    list.fill(9);
    qInfo() << list;

    list.resize(12);
    std::fill(list.begin(),list.end(),-1);
    qInfo() << list;

    return a.exec();
}

추가2) qSort는?

역시 std::sort쓰자

#include <QCoreApplication>
#include <QList>
#include <QDebug>
#include <QRandomGenerator>

void randoms(QList<int> *list, int max)
{
    list->reserve(max);
    for(int i = 0; i < max; i++)
    {
        int value = QRandomGenerator::global()->bounded(1000);
        list->append(value);
    }
}

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    QList<int> list;
    randoms(&list,10);

    qInfo() << "Unsorted:" << list;

    //qSort - do not use

    std::sort(list.begin(),list.end());
    qInfo() << "Sorted:" << list;

    std::reverse(list.begin(),list.end());
    qInfo() << "Reversed:" << list;

    return a.exec();
}

About Taehyung Kim

안녕하세요? 8년차 현업 C++ 개발자 김태형이라고 합니다. 😁 C/C++을 사랑하며 다양한 사람과의 협업을 즐깁니다. ☕ 꾸준한 자기개발을 미덕이라 생각하며 노력중이며, 제가 얻은 지식을 홈페이지에 정리 중입니다. 좀 더 상세한 제 이력서 혹은 Private 프로젝트 접근 권한을 원하신다면 메일주세요. 😎

Star
Useful Links