벡터의 capacity 를 줄이기
전산
2004/06/15 17:58
* 보통 vector 의 capacity() 를 줄이는 방법으로는 Scott Meyers 가 Effective STL 에서 제시한 swap() 을 이용하는 방법이 알려져 있지만, 모 커뮤니티에서 토론하는 도중 다른 방법이 떠올랐다.. swap() 해야할 임시객체가 필요하지 않기에 좀더 낫다고 생각.
* 아이디어는 매우 심플. 소멸자를 불러준 후 placement-new 를 이용해 생성자를 불러주면 끝.
* 생성자/소멸자 호출시의 예외를 주의해야함.
* 아이디어는 매우 심플. 소멸자를 불러준 후 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;
}







Textcube 1.8.5 : Accelerando