ㄱ. 단일 요소 멤버 함수보다 범위 멤버 함수가 더 좋은 이유.
① 범위 멤버 함수를 사용한 코드가 대개 짧다.
② 범위 멤버 함수는 훨씬 명확하고 간결한 의미를 전달 한다.
ㄴ. 단일 요소 멤버 함수에서는 메모리 할당자의 요구 많음.
객체 복사도 빈번, 불필요한 연산도 자주 일어남.
같은 일은 한다면, 범위 멤버 함수는 이 보다 효율적.
ㄷ. copy를 사용하여 루프 없이 비슷해 보이지만 범위 단위로 동작하는 멤버 함수보다 비효율적인 면이 있다.
① 불필요한 함수 호출 – 범위 멤버 함수는 한번만 하면 되기 때문.
② 새로운 요소를 넣기 위해 들어 있던 요소를 밀어 넣는 비용.
③ 메모리 할당.
ㄹ. 범위 멤버 함수.
① 범위 생성 – 모든 컨테이너는 다음과 같은 생성자를 지원.
container::container(Inputlterator begin, Inputlterator end);
② 범위 삽입 – 모든 표준 컨테이너는 다음과 같은 insert를 지원
void contatiner::insert(iterator position, Inputiterator begin, Inputiterator end);
연관 컨테이너
void contatiner::insert(Inputiterator begin, Inputiterator end);
③ 범위 삭제
iterator contation::erase(iterator begin, iterator end); - 표준 시퀀스 컨테이너
void contation::erase(iterator begin, iterator end); - 표준 연관 컨테이너
④ 범위 대입 – 모든 표준 시퀸스 컨테이너
void contatiner::assign(Inputiterator begin, Inputiterator end);
#include "stdafx.h" #include < iostream > #include < string > #include < vector > class CTest { public: CTest(const int _kiID) : m_iID(_kiID) { cout << "ID : "<< m_iID << " 디폴트 생성자 호출" << endl; } CTest(const CTest& _krTest) : m_iID(_krTest.m_iID) { cout << "ID : "<< m_iID << "복사 생성자 호출" << endl; } const CTest& operator = (const CTest& _krTest) { this->m_iID = _krTest.m_iID; cout << "ID : "<< m_iID << "대입 연산자" << endl; return *this; } ~CTest() { cout << "ID : "<< m_iID << "소멸자" << endl; } private: int m_iID; }; int _tmain(int argc, _TCHAR* argv[]) { CTest TestArr[5] = {1, 2, 3, 4, 5}; cout << "=====================================================" << endl; std::vector< CTest > VecTest1; std::vector< CTest > VecTest2; VecTest1.insert(VecTest1.begin(), TestArr, TestArr + 5); cout << "=====================================================" << endl; copy(TestArr, TestArr + 5, inserter(VecTest2, VecTest2.begin())); return 0; }
'[ Programming ] > [ Effective STL]' 카테고리의 다른 글
STL 항목 7 : new로 생성한 포인터의 컨테이너를 사용할 때에는 컨테이너가 소멸되기 전에 포인터를 delete하는 일을 잊지 말자. (0) | 2009.10.28 |
---|---|
STL 항목 4 : size()의 결과를 0과 비교할 생각이라면 차라리 empty를 호출하자. (0) | 2009.10.27 |
STL 항목 3 : 복사는 컨테이너 안의 객체에 맞게 비용은 최소화하며, 동작은 정확하게 하자. (1) | 2009.10.23 |
STL 항목 2 : “컨테이너에 독립적인 코드” 라는 환상을 조심하자. (0) | 2009.10.23 |
STL 항목 1 : 적재적소에 알맞은 컨테이너를 사용하자. (0) | 2009.10.22 |