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