벡터의 저장소는 필요에 따라 확장 및 축소되어 자동으로 처리됩니다. 벡터는 일반적으로 정적 배열보다 더 많은 공간을 차지합니다. 이렇게 하면 요소가 삽입될 때마다 벡터를 다시 배치할 필요가 없지만 추가 메모리가 소진된 경우에만 다시 할당할 수 있습니다. 할당된 메모리의 총 양은 capacity() 함수를 사용하여 쿼리할 수 있습니다. 추가 메모리는 shrink_to_fit()에 대한 호출을 통해 시스템에 반환될 수 있습니다. (이후 C ++11) 이에 대해 생각하는 올바른 기술적 인 방법은 : 문자로 끝나는 스칼라 메서드 이름은 오른쪽 연관이며 메서드가 식의 오른쪽에있는 변수에서 온다는 것입니다. 따라서 +: 및 ++::를 사용하면 이러한 메서드는 메서드 이름 오른쪽에 있는 벡터에서 제공됩니다. 벡터는 목록 인터페이스를 구현합니다. ArrayList와 마찬가지로 삽입 순서도 유지하지만 동기화되어 해당 요소의 검색, 추가, 삭제 및 업데이트에서 성능이 저하되기 때문에 스레드가 아닌 환경에서는 거의 사용되지 않습니다. 이 예제는 for 및 foreach를 사용하여 벡터를 반복/반복하는 방법을 보여 준다. (함수형 프로그래밍에 쓰는 것처럼 단순화, foreach는 부작용에만 사용되므로 거의 사용하지 않습니다.) 벡터는 배열의 크기를 미리 모르거나 프로그램의 수명 동안 크기를 변경할 수 있는 크기만 필요한 경우 매우 유용합니다.

이러한 벡터 예제가 도움이 되기를 바랍니다. 이러한 예제의 대부분은 Seq, IndexedSeq, LinearSeq, 목록 등과 같은 다른 불변순차 컬렉션 클래스와 매우 유사하게 작동합니다. (결국 이러한 각 형식 및 ArrayBuffer 및 ListBuffer와 같은 다른 형식에 대한 전용 페이지를 만듭니다.) ArrayList를 사용하여 요소를 저장하고 탐색하는 간단한 예제를 살펴보겠습니다. 벡터는 변경할 수 없으므로 다음 예제의 모든 예제에서 다음과 같이 새 변수에 표시된 작업의 결과를 할당해야 합니다. 지정된 컬렉션의 모든 요소를 지정된 컬렉션의 이터레이터에 의해 반환되는 순서대로 이 벡터의 끝에 적용합니다. ArrayList 및 벡터 모두 목록 인터페이스를 구현 하 고 삽입 순서를 유지 합니다. 벡터는 변경할 수 없으므로 기존 벡터에 요소를 추가할 수 없습니다. 벡터를 사용하여 작업하는 방법은 결과를 새 벡터에 할당할 때 포함된 요소를 수정하는 것입니다. 옵션 유형은 관용구 스칼라 코드에서 많이 사용되므로 옵션을 포함하는 벡터로 작업하는 몇 가지 방법이 있습니다. 열거 인터페이스를 사용하는 Java Vector 클래스의 간단한 예제를 살펴보겠습니다. Vector에는 컬렉션 프레임워크의 일부가 아닌 많은 레거시 메서드가 포함되어 있습니다.

이 클래스의 이터레이터 및 listIterator 메서드에 의해 반환된 이터레이터 는 실패 빠릅니다: 벡터가 생성된 후 언제든지 구조적으로 수정되는 경우, 이터레이터자체의 제거 또는 추가 메서드를 제외한 모든 방법으로 이터레이터는 동시 수정 예외. 따라서 동시 수정에 직면하여 반복기는 미래에 결정되지 않은 시간에 임의적이고 비결정적인 동작을 위험에 빠뜨리지 않고 신속하고 깨끗하게 실패합니다. elements 메서드에서 반환되는 열거형은 실패 빠릅니다. 템플릿 벡터를 사용 하 여 = std::벡터<T, std::pmr::polymorphic_allocator>; 특정 조건에서 Vector는 다중 스레드 응용 프로그램에서 사용하기에 안전하지 않습니다. 이러한 노트는 벡터 클래스 스칼라독에서 온: 벡터 클래스는 개체의 성장 가능한 배열을 구현합니다. 벡터는 기본적으로 레거시 클래스에 속하지만 지금은 컬렉션과 완벽하게 호환됩니다. 지정된 컬렉션의 모든 요소를 지정된 위치에 이 벡터에 삽입합니다. 기본 초기 용량이 10인 빈 벡터를 만듭니다. 즉, 11번째 요소를 벡터에 삽입해야 할 때 벡터의 크기가 다시 조정됩니다. 주: 기본적으로 벡터는 크기를 두 배로 합니다.