2011-01-03 11 views
2

私が試した型Tのコンテナの内容をプリントアウトするためにコピーを()を使用したいと思います:コンパイル時に汎用コンテナにostream_iterator <>を使用するにはどうすればよいですか?

template<typename T> 
void print_con(const T& con, const string& sep = ", ", const string& ms = "") { 
cout << ms << endl; 
copy(con.begin(), con.end(), ostream_iterator<?>(cout, sep)); 
} 

私は何を交換する必要がありますか?と?

おかげで、
チャン

答えて

5

あなたはこの場合、タイプ

typename T::value_type 

のような容器の種類を調べることができ、私が何をしたいことは

copy(con.begin(), con.end(), ostream_iterator<typename T::value_type>(cout, sep.c_str())); 

希望であると考えていますこれは役に立ちます!

+0

ご返信ありがとうございます。しかし、私はあなたの方法を実際に試しました。しかし、それはコンパイルされませんでした。私はVS 2010 C++を使用しています – Chan

+0

Hmmm ...何のエラーがありましたか?区切り文字が生のCスタイルの文字列でなければならないという問題があるかと思いますので、sepをsep.c_str()に置き換えたいと思うかもしれません。 – templatetypedef

+0

申し訳ありません、あなたは正しいです!私の悪い!申し訳ありませんが、慎重にエラーメッセージを読んでください。 – Chan

関連する問題