我在c ++中定期使用blitz库。它有很多不错的设施,比如打印一个只需要的二维数组
cout<<A<<endl;
然而,输出就像(对于2x2阵列)
2 x 2
[ 4 5
2 1]
现在,我希望摆脱它所放置的2x2维度和括号,因为当我希望直接使用该文件来绘制某些内容时,它有时会产生问题。我该怎么做?
答案 0 :(得分:0)
您需要编写自己的输出例程。
最简单的方法可能是创建代理类模板:
template <typename blitzarray>
struct printer
{
printer (const blitzarray& ba_) : ba(ba_) {}
const blitzarray& ba;
};
以正确的方式输出数组:
template <typename blitzarray, typename stream>
stream& operator<< (stream& s, printer<blitzarray> pb)
{
// <-- print the array here <--
return s;
}
然后有一个小辅助函数,有助于推断出模板参数:
template <typename blitzarray>
printer<blitzarray> myprint(const blitzarray& ba)
{
return printer<blitzarray>(ba);
}
使用只是:
cout << myprint(A) << endl;