STL은 일반 프로그래밍의 예입니다. 개체 지향 프로그래밍은 프로그래밍의 데이터 측면에 중점을 두지만 일반 프로그래밍은 알고리즘에 중점을 둔다. 용량이 반드시 벡터 크기와 같지는 않습니다. 각 삽입에 재할당할 필요 없이 성장을 수용할 수 있는 여분의 공간으로 유사하거나 더 높을 수 있습니다. 이 상수 거점은 읽기 전용 액세스를 제공하는 것으로 상수 거점을 생각할 수 있다는 점을 제외하고는 일반 이터레이터와 같습니다. 그러나 반복기 자체는 변경될 수 있습니다. 즉, 벡터 주위로 이터를 이동할 수 있습니다. 그러나 우리는 이터를 통해 요소의 값을 변경할 수 없습니다. 벡터는 요소를 삽입하거나 삭제할 때 자동으로 크기를 조정할 수 있는 동적 배열과 동일하며 저장소는 컨테이너에서 자동으로 처리됩니다. 벡터 요소는 연속 저장소에 배치되므로 이터레이터를 사용하여 액세스하고 트래버스할 수 있습니다. 벡터에서 데이터는 끝에 삽입됩니다. 배열을 확장해야 하는 경우가 있기 때문에 끝에 삽입하는 데는 차등 시간이 소요됩니다.

크기 조정이 발생하지 않으므로 마지막 요소를 제거하는 데 일정한 시간만 걸립니다. 시작 또는 중간에 삽입하고 지워지는 것은 선형입니다. 요소는 연속적으로 저장되므로 이터레이터를 통해서뿐만 아니라 요소에 대한 일반 포인터에 대한 오프셋을 사용하여 요소에 액세스할 수 있습니다. 즉, 벡터 요소에 대한 포인터는 배열요소에 대한 포인터를 기대하는 모든 함수에 전달될 수 있습니다. 다음은 행렬 곱셈을 계산하는 데 사용되는 다차원 벡터의 예입니다: 모든 STL 컨테이너는 형식을 정의합니다. 이 목록에서는 X를 사용하여 컨테이너에 저장된 문자에 대해 벡터 및 T와 같은 컨테이너 유형을 나타냅니다. 이 코드를 void 함수에 넣고 벡터를 인수로 전달할 수 있습니다. 이제 질문은 “어떻게 하면 벡터를 인수로 전달할 수 있습니까?”입니다. 그리고 우리는 두 가지 방법이 있습니다 : 벡터에 대한 일반적인 연산의 복잡성 (효율성)은 다음과 같습니다 : 함수 끝 () 벡터의 끝에 이터레이터를 반환합니다.

예비()를 살펴보기 전에 벡터에 더 많은 공간이 필요할 때마다 무슨 일이 일어나고 있는지 알아야 합니다. realloc 작업과 유사하게 수행됩니다. 새 메모리 할당, 이전 에서 새 복사본, 소멸 된 오래 된 개체, 할당 할당 이전 메모리, 이터레이터의 무효화. 그것은 비싸다! reserve()는 인수로 제공되는 수로 벡터의 용량을 증가시킵니다. reserve()는 추가 메모리의 재할당이 발생하는 시기를 제어합니다. 컨테이너는 특정 종류의 개체 컬렉션을 관리하는 데 사용됩니다. deque, 목록, 벡터, 지도 등과 같은 컨테이너에는 여러 가지 유형이 있습니다. capacity()는 벡터의 용량을 반환합니다(프로그램이 더 많은 메모리를 할당하기 전에 벡터가 보유할 수 있는 요소 수).

따라서 벡터의 용량은 벡터가 현재 보유하고 있는 요소 수의 크기와 같지 않습니다. 즉, 용량()은 컨테이너의 크기이고 크기()는 현재 채워진 수준입니다. 용량()은 항상 크기와 같거나 크다. 둘 사이의 차이점은 후드 아래의 배열을 다시 할당하기 전에 벡터에 추가할 수 있는 요소의 수입니다. v가 벡터인 경우 out push_back()과 함께 사용할 때 새 벡터 요소의 공간은 다음과 됩니다. 요소의 관점에서 표현된 벡터에 현재 할당된 저장 공간의 크기를 반환합니다.