동적 배열이란 무엇입니까?
동적 배열은 여러 컴퓨팅 개체를 단일 그룹으로 보유하는 컴퓨터 프로그래밍에 사용되는 데이터 구조이며 다양한 수의 개체를 수용하도록 마음대로 크기를 조정할 수 있습니다. 이 그룹은 하나의 연속 된 메모리 블록으로 유지되므로 요소에 대한 액세스가 효율적이고 빠릅니다. 동적 배열은 사용되는 컴퓨터 언어에 따라 벡터 또는 목록이라고도합니다. 이러한 이름에도 불구하고, 목록과 벡터는 배열과 서로 다르게 구현 될 수 있으므로 특정 목록이나 벡터는 동적 배열이 아닐 수 있습니다.
C ++에는 표준 템플릿 라이브러리라는 클래스 그룹에 상주하는 vector라는 단일 동적 배열 클래스가 포함되어 있습니다. 이 클래스를 지원하는 배열은 반복자 또는 인덱스로 액세스 할 수 있습니다. 필요에 따라 크기를 조정할 수있는 기능은 큰 장점이지만 프로그래머가 생각하는 것만 큼 강력하지 않기 때문에 잘못된 보안 감각으로 프로그래머를 유혹 할 수 있습니다. 벡터를 지원하는 동적 배열은 액세스 요청이 유효한지 확인할 수 없습니다. 정적 배열과 마찬가지로, 동적 배열은 프로그램이 할당되지 않은 메모리에 액세스하려고하면 경계 검사 및 메모리 손상 문제가 발생할 수 있습니다.
Java에는 Vector, ArrayList 및 CopyOnWriteArrayList의 세 가지 고유 한 동적 배열 클래스가 있습니다. 배열의 요소는 인덱스에서만 액세스 할 수 있으며 배열 외부의 인덱스에 액세스하려고하면 일반적으로 메모리 손상 문제가 발생하지 않습니다. Java Vector 클래스는 C ++ 벡터 클래스와 거의 동일하며 여러 스레드가 액세스 할 수 있도록 동기화되지 않습니다. 대조적으로 ArrayList와 CopyOnWriteArrayList는 모두 스레드로부터 안전합니다. 이 중 CopyOnWriteArrayList는 새로운 값이 배열에 기록 될 때마다 동적 배열을 완전히 재생성하기 때문에 가장 노동 집약적 인 클래스입니다.
동적 배열은 컴퓨터 언어에 관계없이 본질적으로 동일한 방식으로 구현되지만 특정 언어에 따라 다른 기능이 구축 될 수 있습니다. 정적 배열과 마찬가지로 동적 배열은 모두 같은 유형의 객체 인 한 내부에 저장할 수있는 객체의 유형을 제한하지 않습니다. 프로그래머는 동적 배열에 직접 액세스 할 필요가 없습니다. 배열을 감싸는 클래스를 통해 항상 쉽게 사용할 수 있습니다. 이러한 배열을 올바르게 사용하면 코드 내부의 데이터 구성 및 프로그래머가 쉽게 유지 관리 할 수있는 이해하기 쉬운 코드를 만들 수 있습니다.