정수와 QString 값을 저장하는 QVector를 저장하는 QVector의 예는 다음과 같습니다: 이 예제에서는 GFS 출력을 사용하여 850-hPa Q 벡터와 2010년 10월 26일에 대한 Q 벡터 분기를 계산합니다. QVector를 사용하는 일부 API 차이점에 대한 아래 예제를 참조하십시오: 일부 헤드 스크래치가 발생할 수 있는 또 다른 예는 범위 기반 for-loop를 사용하는 경우입니다. 이 루프는 Qt 컨테이너가 의도치 않게 딥 복사본을 분리하고 생성하도록 강제할 수 있습니다: Qt 컨테이너는 “Qt Way”와 “STL 호환 방법”이라는 두 가지 API 집합을 제공합니다. 개인적으로, 나는 Qt 방법은 더 읽을 수 있다고 생각하지만, STL API를 사용하면 나중에 원하는 경우 STL 대응에 대한 Qt 컨테이너를 교체하는 것이 더 쉬울 것입니다. Qt는 STL API를 모방하지만 여전히 당신을 버릴 수있는 몇 가지 불편한 미묘한 점이 있습니다. 예를 들어 크기() 함수와 QVector 및 QList의 인덱스는 int를 기본 유형으로 사용하는 반면 STL의 함수는 일반적으로 std::size_t로 인덱싱됩니다. 따라서 명시적 캐스트가 필요하므로 Qt 컨테이너와 STL 컨테이너 간에 혼합하고 변환하는 것이 다소 어색합니다. QVector는 해당 항목을 벡터(배열)에 저장합니다. 일반적으로 벡터는 초기 크기로 만들어집니다. 예를 들어 다음 코드는 200개의 요소가 있는 QVector를 생성합니다.

아래 예제 를 참조하십시오: 마지막으로 두 행렬의 예제에서 벡터 및 배열로 작업하는 또 다른 방법입니다. 이는 위의 방법과 다소 다릅니다. 이 경우 행렬 또는 2차원 배열에는 하나의 QVector 차례로 벡터 QVector <QVector 모든 행렬의 목록이 포함됩니다. 대부분의 Qt 컨테이너는 복사를 최소화하여 리소스 사용을 최대화하는 최적화인 암시적 데이터 공유를 사용합니다. 기본적으로 컨테이너는 내부적으로 참조 계산 및 복사-온-쓰기를 사용합니다. 즉, Qt 컨테이너를 복사할 때 는 얕은 복사본일 뿐이고 “real”, 깊은 복사는 const 가 아닌 함수가 호출될 때 수행된다는 것입니다. 이를 이해하는 가장 좋은 방법은 QVector의 값 형식이 할당 가능한 데이터 형식이어야 한다는 예제를 통해 입니다. 여기에는 일반적으로 사용되는 대부분의 데이터 형식이 다루지만 컴파일러에서는 QWidget을 값으로 저장할 수 없습니다.

대신 QWidget *을 저장합니다. 몇 가지 함수에는 추가 요구 사항이 있습니다. 예를 들어 indexOf() 및 lastIndexOf()는 값 형식이 연산자==()를 지원할 것으로 예상합니다. 이러한 요구 사항은 기능별로 문서화되어 있습니다. 다음 게시물에서는 컨테이너의 세계를 살펴보고 Qt가 제공하는 컨테이너와 표준 라이브러리(STL)와 비교하는 방법을 살펴봅니다. 게시물은 서로 다른 유형과 각 라이브러리에 고유한 형식을 살펴봅니다. API, 성능 및 일부 내부 구현 세부 정보도 다룹니다. 게시물의 목표는 다른 라이브러리보다 선호될 수 있는 라이브러리를 식별하는 것입니다. Qt 라이브러리에 대한 Qt의 위키 페이지에 따르면: Qt 라이브러리는 범용 템플릿 기반 컨테이너 클래스 집합을 제공합니다. 이러한 컨테이너 클래스는 STL 컨테이너보다 가볍고 안전하며 사용하기 쉽도록 설계되었습니다.

STL에 익숙하지 않거나 “Qt 방법”을 수행하는 것을 선호하는 경우 STL 클래스 대신 이러한 클래스를 사용할 수 있습니다. 주세페 D`Angelo의 강연에서 그는 Qt 컨테이너가 존재하는 역사적인 이유가 있다고 설명했습니다: 표준 라이브러리를 제공하지 않은 Qt 지원 플랫폼.