Dann ergänze ich noch, dass ein statisches Array hier zwar der technisch korrekte Datentyp ist, aus den von @hustbaer genannten Gründen, aber dass es nicht so recht rüber bringt, dass es sich hierbei um einen mathematischen Vektor handeln soll (Ich gehe mal davon aus, dass es ein mathematischer Vektor sein soll, nach dem, was ich sonst so sehe), weil ein Array nicht die Rechenoperationen mitbringt, die man mit einem mathematischen Vektor verbindet. Solche Rechenoperationen will man aber auch nicht als überladene Operatoren für alle std::array definieren, da das anderswo Arrays kaputt macht, die nicht als mathematische Vektoren gelten sollen. Und immer Funktionsaufrufe a la inner_product(a,b) statt a * b zu schreiben ist auch doof.
Also am besten eine neue Klasse dafür definieren, die dann intern gerne ein Array verwenden darf/sollte. Oder, wie @hustbaer auch schon empfohlen hat, eine fertige Lösung nehmen. Die gibt überall zu finden. Und die guten haben sogar nette Features wie z.B. ziemlich harte Optimierungen der Rechenoperationen, falls man viel damit rechnet. Bei Vektor- und Matrixrechnung kann man nämlich viel rausholen, wenn man sich genauer mit der Computertechnik auskennt.