std:: vector
|
헤더 파일에 정의됨
<vector>
|
||
|
template
<
class
T,
|
(1) | |
|
namespace
pmr
{
template
<
class
T
>
|
(2) | (C++17부터) |
std::vector
는 동적 크기 배열을 캡슐화하는 시퀀스 컨테이너입니다.
std::vector<bool>
부분 특수화를 제외하고, 요소들은 연속적으로 저장됩니다. 이는 요소들이 반복자를 통해서뿐만 아니라 일반 포인터 오프셋을 사용해서도 접근할 수 있음을 의미합니다. 즉, 벡터 요소에 대한 포인터를 배열 요소에 대한 포인터를 기대하는 어떤 함수에도 전달할 수 있습니다.
벡터의 저장소는 자동으로 처리되며 필요에 따라 확장됩니다. 벡터는 일반적으로 정적 배열보다 더 많은 공간을 차지하는데, 이는 향후 성장을 처리하기 위해 더 많은 메모리가 할당되기 때문입니다. 이렇게 하면 요소가 삽입될 때마다 재할당할 필요가 없으며 추가 메모리가 고갈되었을 때만 재할당이 발생합니다. 할당된 메모리의 총량은 capacity() 함수를 사용하여 조회할 수 있습니다. shrink_to_fit() [1] 호출을 통해 추가 메모리를 시스템에 반환할 수 있습니다.
재할당은 일반적으로 성능 측면에서 비용이 많이 드는 작업입니다. reserve() 함수는 요소의 개수를 미리 알고 있는 경우 재할당을 제거하는 데 사용할 수 있습니다.
벡터에서 일반적인 연산의 복잡도(효율성)는 다음과 같습니다:
- 임의 접근 - 상수 시간 𝓞(1) .
- 끝에서의 요소 삽입 또는 제거 - 분할 상환 상수 시간 𝓞(1) .
- 요소 삽입 또는 제거 - 벡터 끝까지의 거리에 선형 비례 𝓞(n) .
std::vector
(
T
가
bool
이외의 타입일 경우)
Container
,
AllocatorAwareContainer
(C++11부터)
,
SequenceContainer
,
ContiguousContainer
(C++17부터)
그리고
ReversibleContainer
요구 사항을 충족합니다.
std::vector
의 모든 멤버 함수는
constexpr
입니다: 상수 표현식 평가에서
std::vector
객체를 생성하고 사용하는 것이 가능합니다.
그러나
|
(C++20부터) |
-
↑
libstdc++에서,
shrink_to_fit()함수는 C++98 모드에서 사용할 수 없습니다 .
목차템플릿 매개변수
특수화
표준 라이브러리는 공간 효율성을 위해 최적화될 수 있는
반복자 무효화
멤버 타입
멤버 함수
비멤버 함수
참고 사항
예제
이 코드 실행
출력: 8 4 -1 9 6 9 결함 보고서다음 동작 변경 결함 보고서는 이전에 발표된 C++ 표준에 소급 적용되었습니다.
참고 항목
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||