배열 및 벡터를 C++로 배우려고 시도하면서 나는 this을 발견했습니다. 게시물에 언급 된 "페이징 효과"란 무엇입니까? 또한, 내 자신의 이해를 확인하기 위해, 나는 벡터가 동적 메모리 할당 때문에 더 많은 시간을 사용한다고 생각한다. 내가 맞습니까?C++에서 페이징 효과 란 무엇입니까?
추가 질문 : vector<int> arr(10000)
와 하지만이없는 이미 10000 INT에 대한 충분한 메모리를 할당? 또는 이렇게하면, arr
은 여전히 모든 요소를 반복하고 초기화하는 경우 계속 증가합니까?
벡터가 커질수록 이전 데이터를 다시 할당하고 이동해야하기 때문에 벡터는 원시 배열보다 느려집니다. .reserve() (또는 .resize)를 사용하여 크기를 알리면이 문제를 피할 수 있습니다. –
그는 이미 reserve()에 대해 언급했습니다. 또한 벡터와 같은 원시 배열을 사용하는 경우에도 다시 할당하고 복사해야합니다. –
@mgb 요소를 삽입 할 때 STL 벡터가 항상 동적 할당을 수행하지는 않습니다. 대부분의 (모든?) 구현은 선형 시간 삽입을 허용하도록 확장 할 때 용량을 두 배로 늘릴 것입니다. 특히, capacity()가 size()보다 큰 경우 벡터 자체 내에서 할당이 발생하지 않습니다. 삽입되는 객체는 벡터에 복사 될 때 물론 자체 할당을 초래할 수 있습니다. – Void