【C++】template 統合スレ -- Part4

このエントリーをはてなブックマークに追加
C++ のジェネリックプログラミングの話をしましょう。
以下のスレッドを統合するスレです。
STLスレッド
Part1 http://pc.2ch.net/tech/kako/1004/10042/1004287394.html
Part2 http://pc3.2ch.net/tech/kako/1026/10267/1026793823.html

【C++】Boost使い集まれ!
http://pc3.2ch.net/test/read.cgi/tech/1033830935/ (html化待ち?)

Generic Programming with C++ Template
http://pc.2ch.net/tech/kako/1008/10085/1008593126.html
【C++】template 統合スレ -- STL/Boost/Loki, etc.
http://pc2.2ch.net/test/read.cgi/tech/1037795348/
【C++】template 統合スレ -- Part2
http://pc2.2ch.net/test/read.cgi/tech/1047978546/ (html化待ち)
【C++】template 統合スレ -- Part3
http://pc5.2ch.net/test/read.cgi/tech/1066493064/
【C++】template 統合スレ -- Part4
http://pc5.2ch.net/test/read.cgi/tech/1083550483/
関連スレ、その他リンクは >>2-5 あたりに。
間違い。すいません。
番号間違えました。パート5です。
すんません。
参考図書

C++ Templates
http://www.amazon.com/exec/obidos/ASIN/0201734842/
Boost C++ Libraryプログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4798007862/

・STL
Generic programming―STLによる汎用プログラミング
http://www.amazon.co.jp/exec/obidos/ASIN/4756134416/
Effective STL
http://www.amazon.co.jp/exec/obidos/ASIN/4894714108/
STLによるコンポーネントデザイン
http://www.amazon.co.jp/exec/obidos/ASIN/475613422X/

・テンプレートによるデザイン
Modern C++ Design
http://www.amazon.co.jp/exec/obidos/ASIN/4894714353/
建った時間からして、こっちの方が次スレかな?
8たてぬし:04/08/03 18:04
Part5でした。新しくスレたてましたので書き込まないでください。
ホントすみません。
9デフォルトの名無しさん:04/08/03 18:07
時間順からして、こっちを新スレにすべきだと思うがどうだろう。
時刻だけが絶対的な条件ではないはず。
タイトルは向こうが適切なのだし、こちらは削除依頼するのがよいと思う。
(´-`).。oO( マージするう… )
12たてぬし :04/08/03 18:38
削除依頼しときました。
誘導キボンヌ
【C++】template 統合スレ -- Part5
http://pc5.2ch.net/test/read.cgi/tech/1091522597/

本スレ
15たてぬし:04/08/03 18:44
【C++】template 統合スレ -- Part5
http://pc5.2ch.net/test/read.cgi/tech/1091522597/l50
です。お騒がせいたしました。
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
>>18
それだけなんですか?
>>19 知らん。あと氏ね。
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; で済む。
【C++】template 統合スレ -- Part5
http://pc5.2ch.net/test/read.cgi/tech/1091522597/
24age
age