如何在编译时使用ostream_iterator <>作为通用容器?

Cha*_*han 2 c++ stl

我想使用copy()打印出类型为T的容器的内容.我试过:

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 ) ); 
}
Run Code Online (Sandbox Code Playgroud)

我应该更换什么?用?

谢谢,

tem*_*def 5

您可以查找容器的类型作为类型

typename T::value_type
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我相信你想要的是

copy( con.begin(), con.end(), ostream_iterator<typename T::value_type>( cout, sep.c_str() ) );
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助!