2014-11-07 3 views
0

자주 '숙제'스타일의 질문배열과 벡터의 장점은 무엇입니까?

std::vectorarray의 장점은 무엇인가 등, SO 등 배열 오버 플로우, 색인, 크기가 배열을 통과 필요 기능, 처리에 나타 납니까?

어떤 상황에서 array을 사용하는 것이 더 좋습니까? int[MAX]std::vector<int>으로 변경하면 많은 문제가 행복하게 해결 될 수 있으며 이러한 문제에서 볼 수있는 거의 모든 코드에서 성능 민감도는 문제가되지 않습니다 (비록 이것이 array의 이점 일 수는 있지만 그렇게 설명하십시오)

+0

낮은 수준의 API는 종종 배열 매개 변수를 가져 오거나 설정하므로이 경우에는 벡터를 비실용적으로 만듭니다. 또한 스택 할당은 힙 할당보다 빠릅니다. –

+0

@RedAlert 이러한 API의 경우'arr' 인 경우'vec [0]'을 전달하여 벡터를 똑같이 잘 사용할 수 있습니다. –

+0

Bah - '추천 질문'을 사용하여 중복 된 것으로 확인되었지만 유용한 것은 표시되지 않았습니다. 그러나 이것은 명백하게 중복됩니다 - 닫을 것입니다. – chrisb2244

답변

0

둘 사이의 차이는별로 없습니다.

Vector는 대부분 Array가 수행하는 모든 작업을 수행하며 상대적으로 비슷하게 컴파일됩니다.

한 가지주의 할 점은 Vector가 컨테이너의 크기를 조정할 때 메모리 위치를 이동할 가능성이 높다는 것입니다 (일부 사용 함수로 인해 발생할 수 있음). 이는 벡터의 데이터에 대한 모든 포인터를 손상시킵니다.

데이터 위치를 이동하지 않으려는 경우 배열의 데이터가 이동하지 않고 원하는 것일 수 있습니다.

필요한 크기를 예약하여 벡터 크기를 조정하지 않아도 크기를 조정하지 않아도되지만 더 안전한 방법은 벡터에 데이터 포인터를 대신 채우는 것입니다.

관련 문제