갬장장이
'lang' 카테고리의 글 목록 (5 Page)

lang

lang/c++

STL Vector에 클래스를 저장할 때 발생하는 일들

다음과 같은 클래스가 있다고 가정해보자. #include #include class Coor { public: int x; int y; public: Coor(int x, int y) : x(x), y(y) { std::cout

lang/c++

STL Vector의 메모리 구조

1, 2, 3, 4 를 저장한 v라는 이름의 STL 벡터가 있다고 가정했을 때, 이 벡터는 메모리 상에서 다음과 같은 구조를 가진다. 여기서 중요한 점은 다음과 같다. 1) 벡터는 정보를 메모리 상에서 연결된 형태로 일렬로 저장한다. 때문에 벡터는 Random Access의 Time Complexity가 O(1)이다. 또 이 일렬로 순서대로 저장한다는 점 때문에, 벡터에서 n번째 위치에 요소를 추가/제거하려면 O(n)이 소요된다. 2) 벡터가 차지하는 공간(capacity)과 그 속에 저장되어있는 요소의 갯수(size)는 다르다. 벡터의 요소의 갯수(size)가 벡터가 보유한 공간(capacity)을 넘어서면 메모리의 다른 공간으로 요소 전체를 복사시키고, 원본은 삭제한다. 이 과정을 reallocati..