"C ++ 입문서"읽기 노트 -04 장 벡터 객체 성장

저자 : Ma Zhifeng
링크 : https : //zhuanlan.zhihu.com/p/24455625
출처 : 거의
저작권이 저자 에게 있음을 알고 있습니다. 상업적 재판의 경우 저자에게 연락하여 승인을 받으십시오. 비상업적 재판의 경우 출처를 표시하십시오.

성명서:

  • 기사의 내용은 "C ++ Primer Chinese Edition (5th Edition)"에서 수집 및 편집되었으며 저작권은 원서에 있습니다.
  • 원본 책은 더 자세하고 멋진 해석을 가지고 있으므로 학습용 정품 책을 구입하세요.
  • 이 기사는 학습과 의사 소통을위한 것이며 어떠한 형태의 전재도 금지되어 있습니다.

본문

빠른 랜덤 액세스를 지원하기 위해 벡터의 요소는 연속적으로 저장됩니다 (연속 메모리 공간).

앞서 언급했듯이 벡터에 요소를 추가하면 전체 컨테이너 메모리 공간이 재 할당 될 수 있습니다.

컨테이너 공간의 재 할당 횟수를 줄이기 위해 새로운 메모리 공간을 획득해야 할 때마다 실제 수요보다 더 큰 메모리 공간 (2 배?)이 할당됩니다.

이 전략은 벡터의 확장 작업이 일반적으로 list 및 deque보다 빠르도록합니다.

관리 컨테이너

c.shrink_to_fit()  
c.capacity()  
c.reserve( n )

capacity 메모리 공간을 재할 당하지 않고 저장할 수있는 요소 수 Reserve
는 최소 n 개의 요소를 보유 할 수있는 메모리 공간을 할당 합니다.
shrink_to_fit () 용량을 크기와 동일한 크기로 줄 이도록 요청하지만 특정 크기에 따라 요청이 무시 될 수 있습니다. 이행

reserve (n), n이 실제 용량보다 작 으면 아무 작업도하지 않습니다. reserve는
컨테이너가 차지하는 메모리 공간을 줄이지 않습니다 . resize는 컨테이너의 용량이 아닌 컨테이너의 요소 수만 변경합니다.

shrink_to_fit은 벡터, 문자열 및 데크에만 적용됩니다.

용량 및 예약은 벡터 및 문자열에만 적용됩니다.

추천

출처blog.csdn.net/qq_26751117/article/details/53821788