2011년 1월 24일 월요일

C/C++ Vector

http://kimhj8574.egloos.com/4721375

[C/C++] 벡터 사용하기
선언하기
std::vector<float> aaa;
//float 형의 aaa 라는 벡터를 선언
std::vector<int*> bbb;
//int 포인터형의 bbb 라는 벡터를 선언

일정 크기의 메모리 미리 할당 (array 처럼)
aaa.reserve( sizeof(float)*100 ); 
//float형 100개가 들어갈 크기를 미리 할당

벡터 안에 값 넣기
aaa.push_back(3);
//3이라는 값 넣기, 단순히 최후에 저장된 값 다음에 저장 됨.
aaa[0]=3;
//그자리에 메모리가 할당 되어 있다는 것만 확실하다면, 보통 array 쓰듯이 이렇게 넣을 수도 있음.
//그러니까, 현재 벡터 크기가 10인데, 15 위치에 넣거나 하면 안되고, 7이나 8 정도면 괜찮음

aaa.insert( aaa.begin(), 100); 
//aaa 벡터의 첫번째 주소에 100이라는 값 넣기.  첫번째에 넣으며 값들을 밀어내며 넣는다.
//예를들어,  벡터에  3, 4, 5 가 들어가 있었는데, 첫번째에 100을 넣으면
//100, 3, 4, 5  순으로 저장 된다.
aaa.insert( aaa.begin()+n , 200);
//aaa 벡터의 n번째에 200 이라는 값 추가
// aaa 벡터에 3, 4, 5 가 들어가 있었다면,  3, 4, 5, 200 순으로 저장 됨.

벡터 데이터의 주소 알아내기
// begin() : 벡터의 첫 번째 데이터가 들어있는 주소 리턴
// end() : 벡터의 마지막 데이터가 들어있는 다음 주소 리턴 -> push_back 으로 넣는다면, 들어갈, 다음 메모리 주소
예제)
int *i;
i=aaa.begin();  //aaa 벡터의 첫번째 값의 주소를 가져옴.
printf("%d\n",*i);  //i가 가리키는 값을 출력, 그러니까 aaa[0] 을 출력

벡터 사이즈 보기
printf("%d\n", aaa.size());
//벡터 사이즈 출력

//보통 많이 쓰는 형태.  for문으로 돌리며 값 참조하려고 많이 쓴다.
for(int i=0; i<aaa.size(); ++i)
{
    printf("%d\n",aaa[i]);  //벡터 aaa의 값을 전부 출력.
}
값 참조하기
printf("%d\n", aaa[j]);
//j 번째 자료를 출력

함수로 사용할 때, 매개변수로 사용하기
void function(std::vector<float> &aaa);
//선언할 때 매개변수를 주소로 써야 한다.
function(aaa)
//벡터는 그냥 선언해도, 그냥 주소로 들어감

초기화하기
if(aaa.size()>0)
    aaa.clear();
//보통 프로세스 시작하기 전, 그리고 다 끝낸 뒤에 벡터 초기화 한다.

다른 벡터에서 값 가져 오기
aaa=bbb;
//그냥 주소 그대로 가져오듯 사용

댓글 없음:

댓글 쓰기