物理シミュレーションのプログラムで、クラス内部にvectorを使用するプログラムを作成しています。
#include <iostream>
#include <vector>
using namespace std;
class hoge{
private:
public:
vector<int> order;
int num;
hoge(int);
~hoge();
};
hoge::hoge(int num)
: num(num)
{};
hoge::~hoge(){
vector<int>().swap(order);
}
int main(){
int n = 10000000;
vector<hoge> obj;
obj.reserve(n);
for(int i=0; i<n; i++){
obj.push_back( hoge(i) );
}
for(int i=0; i<n; i++){
obj[i].order.push_back(i);
}
cout << sizeof(obj[0]) << endl;
vector<hoge>().swap(obj);//ここでobjをすべて開放したい
return 0;
}
また、途中でobjの解放を行いたいのですが、swapを用いてもすべて解放することができません。
質問として、
データメンバとしてvectorを宣言するとなぜこのような大きなサイズになるのか?
サイズの縮小方法はあるのか?
解放はどのように行えばよいか?
説明不足かもしれませんが、よろしくお願い致します。