C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 53 を表示中)
■29867 / )  Re[3]: テンプレート変数からイテレータ変数の宣言
□投稿者/ 774RR (260回)-(2008/12/16(Tue) 08:43:09)
ええっと、俺のソースコードそのまま試してみたりした?
してないだろ。そういうコメントが出てくる、っつことは。

list<int> を list<double> にしてみたり vector<int> にしてみたり
っつーことなら
typedef list<int> container_type; を
typedef list<double> container_type; にしたり
typedef vector<int> container_type; にしたり
すれば、それ以外の部分はすべて container_type を使えばいい。
iterator がほしけりゃ container_type::iterator と書ける。
value_type がほしけりゃ container_type::value_type と書ける (int や double になる)

毎回毎回 container_type::iterator と書くのがめんどくさいのなら
typedef container_type::iterator Iterator; としておくのも可能。

なんだけど、俺のコードは脊髄反射で書いた代物なので、実用に供するなら
No29861 あんどちん 氏のコメントと同じく当該処理をすべて template にする。
氏のソースは T として iterator_type が定義してあるクラスのみコンパイルが通る
という代物になっているわけだ。標準コンテナはすべて OK だし、
「前提条件」を満たすような自作コンテナでもうまく動く、ということだよ。
返信 編集キー/


管理者用

- Child Tree -