qlist 예제

QList의 값 형식은 할당 가능한 데이터 형식이어야 합니다. 여기에는 일반적으로 사용되는 대부분의 데이터 형식이 다루지만 컴파일러에서는 QWidget을 값으로 저장할 수 없습니다. 대신 QWidget *을 저장합니다. 목록에 항목을 삽입하려면 operator<<(), insert(), 추가() 또는 prepend()를 사용할 수 있습니다. 예: 목록에서 특정 값의 모든 발생을 찾으려면 indexOf() 또는 lastIndexOf()를 사용합니다. 전자는 지정된 인덱스 위치에서 시작하여 앞으로 검색하고 후자는 뒤로 검색합니다. 둘 다 일치하는 항목의 인덱스를 찾으면 반환합니다. 그렇지 않으면 -1을 반환합니다. 예: QSet은 예제에 색상을 저장하는 데 사용됩니다. 한 가지 색상 값을 더 많이 지정하는 것은 의미가 없습니다. 컨테이너에는 순차및 연관이라는 두 가지 종류가 있습니다. 순차 컨테이너는 항목을 차례로 저장하는 반면 연관 컨테이너는 키-값 쌍을 저장합니다. QList, QVector, QLinkedList는 순차 컨테이너에 속합니다.

QMap 및 Q해시는 연관 컨테이너의 예입니다. at()는 깊은 복사본이 발생하지 않기 때문에 연산자[]()보다 빠를 수 있습니다. . 목록의 마지막 항목을 제거하고 반환합니다. 이것은 테이크와 동일합니다(크기(크기)- 1). 이 함수는 목록이 비어 있지 않다고 가정합니다. 실패를 방지 하려면 이 함수를 호출 하기 전에 호출합니다Empty() . 집합 정렬은 지원되지 않습니다. 집합에서 목록을 만들고 정렬할 수 있습니다.

값() 메서드는 집합의 요소를 포함하는 새 QList를 반환합니다. QList의 요소 순서는 정의되지 않습니다. . 인덱스 i가 경계를 벗어난 경우 함수는 기본 생성 값을 반환합니다. 인덱스가 경계 내에 있을 것이라고 확신하는 경우 at()를 대신 사용할 수 있습니다. 위치 pos에서 시작하여 이 목록에서 복사된 요소가 있는 목록을 반환합니다. 길이가 -1(기본값)이면 pos의 모든 요소가 복사됩니다. 그렇지 않으면 길이 요소(또는 길이 요소가 적은 경우 나머지 모든 요소)가 복사됩니다. QList 컨테이너가 만들어집니다. 그것은 작가의 이름을 저장합니다. .

내부적으로 QList 는 T 형식의 항목에 대한 포인터 배열로 표시됩니다. T자체가 포인터 형식이거나 포인터보다 크지 않은 기본 형식이거나 T가 Qt의 공유 클래스 중 하나인 경우 QList는 포인터 배열에 직접 항목을 저장합니다. 천 개의 항목 아래의 목록의 경우 이 배열 표현을 사용하면 중간에 매우 빠르게 삽입할 수 있으며 인덱스 기반 액세스를 허용합니다. 또한 QList는 내부 배열의 양쪽 끝에 메모리를 할당하기 때문에 prepend() 및 추가()와 같은 작업은 매우 빠릅니다. 자세한 내용은 알고리즘 복잡성을 참조하십시오. 그러나 포인터보다 큰 공유되지 않은 목록 항목의 경우 새 항목을 추가하거나 삽입하려면 힙에 새 항목을 할당해야 하며 항목당 할당당 이 항목을 추가하거나 삽입하는 경우 QVector를 더 나은 선택으로 만들 수 있습니다. QVector는 단일 힙 할당에서 해당 항목에 대한 메모리를 할당하므로 T가 QString인 경우 이 클래스에는 필터, 조인, 제거중복, 정렬과 같은 추가 멤버가 있습니다. .

. . 즉, 코드가 여전히 QList를 사용하는 경우 QObject가 삭제되지 않도록 해야 합니다. QList 클래스는 목록을 제공하는 템플릿 클래스입니다. 인덱스 i가 경계를 벗어난 경우 함수는 defaultValue를 반환합니다. „귀하의 답변 게시“를 클릭하면 서비스 약관, 개인 정보 보호 정책 및 쿠키 정책에 동의합니다. . 이터레이터의 도움으로, 우리는지도의 모든 요소를 통해 걸어. key() 메서드는 현재 키를 반환하고 value() 메서드는 현재 값을 반환합니다.