2015년 7월 23일 목요일

Vector(c 자료구조 벡터)


2015/07/23 수업 3일차

벡터란 .,, 한마디로 동적배열이다.

오늘 처음으로 c로 클래스를 구현해 보았다.

객체지향이라는 의미를 몸소 느낄수 있는 코딩시간이었다.

c를 객체 지향적으로 만드는일은 매우 번거롭다. 구조체 안에 변수만 넣을 수 있다.

그래서, visual studio에서 구조체 접근 연산자인 '.' 을 찍으면 멤버 변수를 볼 수 있다.

만일 여기에, 함수를 넣을 수 있다면? c++언어의 클래스와 비슷한 기능을 사용할 수 있다.

하지만, c에서는 함수를 구조체에 넣을 수 없기 때문에, 함수 포인터를 사용하였다.

------------------------------------------------------------------------------------------------


벡터의 동작원리



위와 같이,[1,2,3] 인 크기가 3개인 배열이있다.  이때 , 4를 추가로 넣고싶다.


이럴땐, 크기가 기존보다 큰 임시의 배열을 생성한다.

기존의 [1,2,3]을 임시배열에 모두 복사한다.

넣고자하는 값을 임시배열에 추가한다.

기존 배열을 가르키는 포인터가 임시배열을 가르키면, 배열의 크기가 더 커진 상태가 된다.

C/C++은 기존 배열을 메모리 해제  해줘야 하지만, JAVA의 경우는 단순히 이동만 하면 된

다.


위와 같이 , C로 클래스를 만들어 보았다.

vector.c 다운로드

vector.h 다운로드

vector sample 다운로드

0 개의 댓글:

댓글 쓰기