Для математики Blitz ++ - самая большая библиотека для программирования массивов. Вот несколько примеров из документации:
#include <blitz/array.h>
using namespace blitz;
Array<int, 1> x(10); // one-dimensional array of 10 int's
firstIndex i; // place holder index
x = 10 * i; // x == 0, 10, 20, 30...
x = 10 * tensor::i; // a short form of the above two expressions
// another example, with array-level assignments and arithmetic
Array<int, 1> a(4), b(4), c(4);
a = 1, 2, 3, 4;
b = 5, 6, 7, 8;
c = a + b;
Blitz ++ использует шаблоны выражений , метод метапрограммирования шаблонов, похожий на ленивую оценку. Таким образом, сгенерированный компилятором код не использует ненужных временных переменных и должен быть таким же быстрым, как рукописные циклы.
Вот эквивалентный код k, для заинтересованных:
x:10*!10
x
0 10 20 30 40 50 60 70 80 90
a:1 2 3 4
b:5 6 7 8
c:a+b
c
6 8 10 12