我发现打印矢量的最佳方法是使用某种包装器:
让我们从以下开始:
template< typename T >
class ConstVecFormat
{
private:
std::vector<T> const& vec_;
const std::string prefix_, delim_, suffix_;
public:
explicit ConstVecFormat( std::vector<T> const& vec, prefix="", delim=",", suffix="" ) :
vec_(vec), prefix_(prefix), delim_(delim), suffix_(suffix_)
{
}
std::ostream& print( std::ostream& os ) const
{
typename std::vector<T>::const_iterator iter = vec_.begin(), end=vec_.end();
os << prefix_;
if( iter != end )
os << *iter;
else
while( ++iter != end )
{
os << delim_ << *iter;
}
os << suffix_;
return os;
}
};
template< typename T >
std::ostream & operator<<( std::ostream & os, ConstVecFormat<T> const& format )
{
return format.print( os );
}
这正朝着成为上一个主题的副本的方向发展,在该主题中,我们对这个模板进行了很多增强,以产生一个更通用的打印集合。