zoo*_*ini 1 c++ types function vector
我有一个非常简单的功能,打印vector<double>到cout.我有相同的功能vector<int>.我可以用一个函数替换它们,如果可能的话,可以采用任何类型的向量吗?
void printv(vector<double> vec)
{
copy(vec.begin(),vec.end(), ostream_iterator<double>(cout," "));
cout << endl;
}
void printv(vector<int> vec)
{
copy(vec.begin(),vec.end(), ostream_iterator<int>(cout," "));
cout << endl;
}
Run Code Online (Sandbox Code Playgroud)
如果有人建议专门用于打印任何类型的矢量的解决方案,我有一个将向量保存到文件的功能相同的问题,所以关键是一般问题,而不是特别与打印有关.
提前致谢!
当然.这就是C++的意义所在.
template<typename T>
void printv(vector<T> const& vec)
{
copy(vec.begin(), vec.end(), ostream_iterator<T>(cout," "));
cout << endl;
}
Run Code Online (Sandbox Code Playgroud)
只要T是"输出可流动"就可以工作.
注意:我已添加const&到签名中以避免复制.
现在,您可以更进一步:
template<typename Container>
void print(Container const& c)
{
using std::begin;
using std::end;
using std::copy;
copy(begin(c), end(c), std::ostream_iterator<typename Container::value_type>(cout, " "));
cout << endl;
}
Run Code Online (Sandbox Code Playgroud)
使其适用于所有标准容器,而不仅仅是矢量.