1. 기본 함수


reserve 와 resize의 차이.

reserve는 vector의 용량을 늘리는 것으로 적절한 필요 공간을 알경우 새로운 저장 공간 재할당을 막을 수 있으니 잘 사용하자.

실제 값이 할당되는 것은 아니다. 이지 크기가 더 큰 경우에는 용량을 줄여도 허용되지 않는다.


resize는 vector의 크기을 조정하는데 reserve와는 이미 값을 있는 경우에 값을 삭제해 버리니 주의해야 한다.


operator[](size_t n)

지정된 위치의 요소를 참조로 반환한다. 즉 값을 변경할 수 있다.


iterator

STL container 를 순회할 때는 반복자를 쓰는게 좋다.


for(std::vector<int>::iterator iter = scores.begin(0; iter != scores.end(); ++iter)

{

std::cout << *iter << " ";

}


루프를 거꾸로 돌 경우에는 rbegin(), rend() 를 사용한다.


insert

값을 삽입할 수 있다. 아래와 같이 하면 첫번째로 80 이 삽입된다.


std::vector<int>::iterator it = scores.begin();

it = scores.insert(it, 80);


assign

입력값을 연속으로 대입한다. 아래와 같이 하면 숫자 100 이 7개가 추가된다.


vector<int> scores;

scores.assign(7, 100);


swap

두 vector의 값을 서로 교환할 수 있다.


vector<int> scores1;

...

vector<int> scores2;

...


scores1.swap(scores2);


clear

vector를 지운다. 크기는 0이 되지만 용량은 줄이지 않는다.


erase

특정 iterator에 있는 값을 삭제한다.


*iterator

iterator 의 값을 얻을 수 있다. iterator 자체는 포인터 처럼 사용할 수 있다.


2. 사용

- vector 에 개체를 직접 보관할 경우 메모리 복사 발생 시 비용이 높아지게 됨으로 포인터를 저장하는 것이 일반적이다. 물론 이때 메모리 해제를 관리해야 한다.


vector<Score*> scores;

...


for(Score* pScore : scores)

{

delete pScore;

}


scores.cleare();


+ Recent posts