STL Container Class와 같이 Qt에서도 Container Class를 제공해줍니다. 이번 글에서는 자주 사용되는 Container Class에 종류를 알아 보고 대표적으로 QList사용법에 대해 알아보겠습니다.
자주 사용되는 Qt Container Class 목록은 아래와 같습니다.
- QList(QVector) : 데이터를 배열과 같이 저장하는 컨테이너 클래스. Qt 6부터 QVector와 통합됨(관련 글)
- QQueue : FIFO 구조의 클래스
- QStack : FILO 구조의 클래스
- QMap : Key와 Value가 쌍을 이루는 클래스. Value를 Key 순서대로 저장.
- QMultiMap : 하나의 Key과 여러 개의 Value와 연관이 되는 클래스.
- QHash : QMap과 거의 동일하지만 더 빠름. 데이터를 임의의 순서로 저장.
QList 선언
QList 클래스 변수 사용 시 아래 예시처럼 T에 타입을 입력하면 됩니다.
QList<int> listInt; // int형 리스트
QList<QString> listString; // QString형 리스트
QList 삽입
QList에 삽입 하려면 아래와 같이 코딩해줍니다.
// 삽입
qDebug() << "===============================";
listString << "hello" << "hi"; // operator<< 삽입
qDebug() << listString;
listString.insert(1, "world"); // Index 위치에 삽입
qDebug() << listString;
listString.prepend("Qt"); // 맨 앞에 삽입
qDebug() << listString;
listString.append("programmer"); // 맨 뒤에 삽입
qDebug() << listString;
실행하면 아래와 같이 출력합니다.
QList 값 얻기
QList에 값을 얻기 위해서는 at 함수를 사용합니다.
qDebug() << "===============================";
for (qsizetype i = 0 ; i < listString.size() ; i++)
{
QString str = listString.at(i);
qDebug() << "index: " << i << ", String: " << str;
}
qsizetype은 간단히 설명하면 Qt에서 제공하는 사이즈를 위한 특별한 정수형 타입입니다.
위 코드를 실행하면 아래와 같이 출력합니다.
QList 삭제
QList에 삭제를 하려면 아래와 같이 remove로 되어있는 함수들을 사용하면 됩니다.
// 삭제
qDebug() << "===============================";
listString.remove(1); // Index 위치 삭제
qDebug() << listString;
listString.removeFirst(); // 맨 앞에 삭제
qDebug() << listString;
listString.removeLast(); // 맨 뒤에 삭제
qDebug() << listString;
listString.clear(); // 모두 삭제
qDebug() << listString;
위 코드를 실행하면 아래와 같이 출력합니다.
이상으로 컨테이너 클래스에 대해 간단히 알아보았습니다.