Изменение формата вывода в блиц
Я регулярно использую библиотеку блиц в с ++. У этого есть довольно много хороших средств как напечатать 2-мерный массив, который просто необходим
cout<<A<<endl;
Тем не менее, выход получается как (для массивов 2x2)
2 x 2
[ 4 5
2 1]
Теперь я хочу избавиться от измерения 2x2 и заключенных в него скобок, потому что это иногда создает проблему, когда я хочу напрямую использовать файл для построения графика. Как мне это сделать?
1 ответ
Вам нужно написать свою собственную процедуру вывода.
Вероятно, самый простой способ сделать это - создать шаблон прокси-класса:
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;
Вы, вероятно, можете позаимствовать исходную процедуру вывода blitz++.