【C++】template 統合スレ -- Part4
間違い。すいません。
番号間違えました。パート5です。
すんません。
建った時間からして、こっちの方が次スレかな?
Part5でした。新しくスレたてましたので書き込まないでください。
ホントすみません。
9 :
デフォルトの名無しさん:04/08/03 18:07
時間順からして、こっちを新スレにすべきだと思うがどうだろう。
時刻だけが絶対的な条件ではないはず。
タイトルは向こうが適切なのだし、こちらは削除依頼するのがよいと思う。
(´-`).。oO( マージするう… )
削除依頼しときました。
誘導キボンヌ
16 :
デフォルトの名無しさん:04/08/03 19:42
夏だし、Part4が2個有ったほうがいいんじゃない?
向こうはここ使い切るまで保守しとけば?
typedef Array<int> IntArray;
こういうのを良く見かけるのですが、なぜtypedefするんですか?
どうか御教授ください。
>>17 int xxx(int n);
int x = xxxx(2);
こういう変数 x みたいなもの。
何度も使うときに効率が良い。
templateの場合は字数、トークン数くらいにしか効果が無さそうだけど。
19 :
デフォルトの名無しさん:04/08/03 21:18
21 :
デフォルトの名無しさん:04/08/03 21:33
>>19 1.簡略化
std::map<std::string, boost::shared_ptr< T > > instances;
なんてのが在ったとして、"abc" に対応する要素について処理したいとき、
pair< std::map<std::string, boost::shared_ptr< T > >::iterator, std::map<std::string, boost::shared_ptr< T > >::iterator > range = instances.euqal_range("abc");
for (std::map<std::string, boost::shared_ptr< T > >::iterator it = range.first; it != range.second; ++it)
{
...
}
は長いし、あとで std::string やめて std::wstring にしよう、とか思ったときも少し手間が増えるでしょう。
2.テンプレートパラメータとして使われる型の内部での typedef
例えば1.の例の "iterator" なんかは、クラス内部で typedef されていて、そのクラスをパラメータとして用いる
テンプレートのコードでは、実際に何に typedef されているかを知ることなく利用することができます。
>>17 そのケースの場合はたしかにtypedefするほどのことかと思うけど、たとえばSTLを使ってたりすると,
map< string, CMyClass, myCompfunc, myAllocator > とかの場合、イタレーターを宣言したりするのが大変なわけだ。
typedef map< string, CMyClass, myCompfunc, myAllocator > mapMyCalss
ってしておけば、mapMyClass::iterator it; で済む。
age