【初心者歓迎】C/C++室 Ver.62【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
0571デフォルトの名無しさん
2008/12/25(木) 17:21:46typedef vector< vector< shared_ptr<MyClass> > > DoubleList;
このDoubleListはあちこちで使っていたところ、プログラムサイズが馬鹿でかくなってしまいました。
ちょっと思いついたことがあり
class DoubleList
{
public:
vector< vector< shared_ptr<MyClass> > > m_list;
void push_back(MyClass &s);
//その他、vectorに存在する色々な関数を宣言。
};
として、関数群の実体をcppファイル側に書いてみました。
そうしたところ、プログラムサイズは劇的に小さくなりました。
「まさか前者のやりかただと、各.cpp毎でテンプレートを展開しDoubleListクラスを作ってしまうのか?」
と思っているのですが、この認識は正しいでしょうか?
それまでの自分の認識ですと、<>内が同じテンプレートがあちこちで使われていたとしても、コンパイラが1つだけ実体を作ってくれる。
という認識だったのですが…。
3重テンプレートが悪いのかと思い、
typedef vector< shared_ptr<MyClass> > SingleList;
typedef vector< SingleList > DoubleList;
としてみてもダメでした。
■ このスレッドは過去ログ倉庫に格納されています