La librería Boost es un conjunto de bibliotecas de software libre preparadas para extender las capacidades del lenguaje de programación C++. Es decir que es una extensión de las librerías STL que incluye C++ estándar en la que entre otras cosas podemos encontrar una extensión que nos permite trabajar con matrices y operar con ellas tal y como veremos a continuación.
Instalación
Para instalar Boost en vuestro sistema os recomiendo que sigáis la guía oficial para vuestro sistema operativo (Linux, Windows). Existen versiones pre-compiladas y dependiendo del vuestra de distribución Linux en ocasiones Boost viene pre-instalado directamente. Por otro lado si trabajáis en Windows con Visual Studio podeis bajaros la versión binaria que proporciona BoostPro con la librería pre-compilada para cada una de las versiones de Visual Studio.
Matrices
Y ahora vamos al grano. La clase template matrix nos permite trabajar de una forma fácil con matrices de cualquier tipo y realizar sobre ellas operaciones simples (sumas, restas, etc.) . En el siguiente ejemplo en primer lugar se importa la clase, después se definen los namespaces en los que se trabaja y finalmente se muestra el un código que realiza la carda de una matriz, una serie de operaciones y vuelve a mostrar los resultados:
// includes
#include <boost/numeric/ublas/matrix.hpp>
#include <iostream>
// seleccion namespaces
using namespace std;
using namespace boost::numeric::ublas;
int main(int argc, char* argv[]) {
matrix<int> mt (3, 3);
cout << "Generacion de la matriz: " << endl;
for (unsigned r=0; r < mt.size1(); r++) {
for (unsigned c=0; c < mt.size2(); c++) {
mt(r,c) = r+c;
cout << mt(r,c) << " ";
}
cout << endl;
}
cout << "Operaciones con la matrix y resultados: " << endl;
mt = mt + mt; // operacion entre matrices
mt = mt * 4; // matriz y escalar.
mt = mt / 2;
mt = mt - mt;
// Impresion resultados
for (unsigned r=0; r < mt.size1(); r++) {
for (unsigned c=0; c < mt.size2(); c++) {
cout << mt(r,c) << " ";
}
cout << endl;
}
}