이 이야기들은 전부 표준 STL 컨테이너에 관한 이야기이다. 만약 vectoer<int> vcInt 라면, vcInt.size() 또는 vcInt.empty() 를 말한다.
size() 함수는 컨테이너에 적재되어진 원소의 갯수를 반환해 주는 함수이고
empty() 함수는 컨테이너에 적재되언 원소가 하나도 없다면 TRUE 를 반환해 주는 함수이다.
이렇게 말하니 좀 어렵다
size() 함수는 몇개 있냐? 물어 볼때 쓰고
empty() 함수는 비워있냐? 물어 볼때 쓴다.
size()는 전부 count 해야 하는 비용을 물어야 하며,
empty()는 처음과 끝이 같은지만 비교하는 비용만 물면 된다.
여담으로..
vector 컨테이너는 스스로 카운팅을 하기 때문에 size() 나 empty() 나 똑같은 비용을 지불한다.(컨테이너 내부를 보고 있으면, 토 나온다...) 하지만 다른 컨테이너들은 비용을 지불하지 않기 때문에(.. 다른 컨테이너는 확인 안해봤다) 적어도 0과 비교 할것이라면 empty()가 싼 비용을 냈으면 냈지 size()보다 더 큰 비용을 내지 않는다는것을 보장(.. 이라고 생각 하는데) 한다.
size() 함수는 컨테이너에 적재되어진 원소의 갯수를 반환해 주는 함수이고
empty() 함수는 컨테이너에 적재되언 원소가 하나도 없다면 TRUE 를 반환해 주는 함수이다.
이렇게 말하니 좀 어렵다
size() 함수는 몇개 있냐? 물어 볼때 쓰고
empty() 함수는 비워있냐? 물어 볼때 쓴다.
size()는 전부 count 해야 하는 비용을 물어야 하며,
empty()는 처음과 끝이 같은지만 비교하는 비용만 물면 된다.
여담으로..
vector 컨테이너는 스스로 카운팅을 하기 때문에 size() 나 empty() 나 똑같은 비용을 지불한다.(컨테이너 내부를 보고 있으면, 토 나온다...) 하지만 다른 컨테이너들은 비용을 지불하지 않기 때문에(.. 다른 컨테이너는 확인 안해봤다) 적어도 0과 비교 할것이라면 empty()가 싼 비용을 냈으면 냈지 size()보다 더 큰 비용을 내지 않는다는것을 보장(.. 이라고 생각 하는데) 한다.
'책 정리 > Effective STL' 카테고리의 다른 글
항목 10 : 할당자(allocator)의 일반적인 사항과 제약 사항에 대해 잘 알아 두자. (2) | 2008.07.14 |
---|---|
항목 9 : 데이터를 삭제할 때에도 조심스럽게 선택할 것이 많다. (0) | 2008.07.13 |
항목 8 : auto_ptr의 컨테이너는 절대로 만들지 말자. (0) | 2008.07.13 |
항목 7 : new로 생성한 포인터의 컨테이너를 사용할 대에는 컨테이너가 소멸되기 전에 포인터를 delete하는 일을 잊지 말자. (0) | 2008.07.13 |
항목 6 : C++ 컴파일러의 어이없는 분석 결과를 조심하자. (0) | 2008.07.13 |
항목 5 : 단일 요소를 단위로 동작하는 멤버 함수보다 요소의 범위를 단위로 동작하는 멤버 함수가 더 낫다. (0) | 2008.07.13 |
항목 3 : 복사(copy)는 컨테이너 안의 객체에 맞게 비용은 최소화하며, 동작은 정확하게 하자. (0) | 2008.07.12 |
항목 2: "컨테이너에 독립적인(container-independent) 코드"라는 환상을 조심하자. (0) | 2008.07.12 |
항목 1: 적재적소에 알맞는 컨테이너를 사용 하자. (0) | 2008.07.11 |
Effective STL 목차 및 링크 (0) | 2008.07.11 |
최근댓글