* 보통 vector 의 capacity() 를 줄이는 방법으로는 Scott Meyers 가 Effective STL 에서 제시한 swap() 을 이용하는 방법이 알려져 있지만, 모 커뮤니티에서 토론하는 도중 다른 방법이 떠올랐다.. swap() 해야할 임시객체가 필요하지 않기에 좀더 낫다고 생각.



* 아이디어는 매우 심플. 소멸자를 불러준 후 placement-new 를 이용해 생성자를 불러주면 끝.



* 생성자/소멸자 호출시의 예외를 주의해야함.



#include <iostream>
#include <vector>

using namespace std;

int main()
{
    vector<int> v;

    v.reserve( 10 );
    cout << "capacity : " << v.capacity() << endl;

    v.~vector();
    new ( &v ) vector<int>();

    cout << "capacity : " << v.capacity() << endl;

    return 0;
}
2004/06/15 17:58 2004/06/15 17:58

트랙백 주소 :: http://testors.net/tt/trackback/12