在闪电战中改变输出格式

时间:2012-06-01 12:51:14

标签: c++ blitz++

我在c ++中定期使用blitz库。它有很多不错的设施,比如打印一个只需要的二维数组

cout<<A<<endl;

然而,输出就像(对于2x2阵列)

2 x 2
[ 4  5 
  2  1]

现在,我希望摆脱它所放置的2x2维度和括号,因为当我希望直接使用该文件来绘制某些内容时,它有时会产生问题。我该怎么做?

1 个答案:

答案 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;

您可以借用original blitz++ output routine