c++ 에서 vector가 내부적으로 어떻게돌아가는지요
글쓴이: zinzzalimp / 작성시간: 월, 2009/07/20 - 8:11오후
c++,c#을 공부하고있는 학생입니다.
다른게아니라, c++에서 vector를 사용하면서 든 의문점인데
vector a = new vector();
대충이렇게쓰고 a.push_back(3);
이런식으로 뒤에 추가할수있데되는데요. 이말은 vector, 또는 배열이 동적으로 유동적으로 늘어나거나 줄어든다는 말인데
내부적으로 어떻게 돌아가는지 알려주실수있나요?
c++vector랑 비슷한게 c#에는 List라고있는데
둘다 같은 내부구조를가지는건가요?
Forums:
C#은 잘 모르겠고,
C#은 잘 모르겠고, 동적배열로서의 std::vector는 간단합니다.
가장 간단한건 push_back 할때마다 크기 하나 키운 배열을 만들고, 그 배열로 전부 복사하고 마지막에 하나 더 붙이고...
하지만 이러면 복사와 재할당이 너무 자주 일어나기 때문에, 실제로는 내부에 적당한 크기로 배열을 할당해두고, 어디까지 값이 들어가있는지 기록해둡니다.
push_back할때마다 이미 할당된 곳에 값을 '복사'해서 넣고, 크기를 하나 키우는 식으로 구현합니다.
그러다가 할당된 배열이 다 채워지면 그때 새로 더 큰 배열을 할당하고 전부 그쪽으로 복사합니다.
다만 이때도 새로 할당하는 배열은 좀 여유있게 할당합니다.
흠..그럼
비슷한 동작을하는 ArrayList도 마찬가지겠군요;;
감사합니다
끝난일은 한일
한일은 끝난일
끝난일은 한일
한일은 끝난일
댓글 달기