46template <std::
size_t N,
typename T>
58 Vector(T a) { std::fill_n(&(d[0]), N, a); }
63 Vector(T (&a)[N]) { std::copy(&a[0], &a[0] + N, &d[0]); }
66 for (std::size_t i = 0; i < N; ++i) d[i] = a;
71 for (std::size_t i = 0; i < N; ++i) d[i] += a.d[i];
76 for (std::size_t i = 0; i < N; ++i) d[i] -= a.d[i];
80 operator double()
const {
return d[0]; }
84template <std::
size_t N,
typename T>
85Vector<N, T>
operator*(T a, Vector<N, T> b) {
87 for (std::size_t i = 0; i < N; ++i) c.d[i] = a * b.d[i];
91template <std::
size_t N,
typename T>
92Vector<N, T>
operator*(Vector<N, T> a, T b) {
94 for (std::size_t i = 0; i < N; ++i) c.d[i] = b * a.d[i];
98template <std::
size_t N,
typename T>
99Vector<N, T>
operator*(
int a, Vector<N, T> b) {
104 for (std::size_t i = 0; i < N; ++i) c.d[i] = a * b.d[i];
109template <std::
size_t N,
typename T>
110Vector<N, T>
operator*(Vector<N, T> a,
int b) {
115 for (std::size_t i = 0; i < N; ++i) c.d[i] = b * a.d[i];
120template <std::
size_t N,
typename T>
121Vector<N, T>
operator*(Vector<N, T> a, Vector<N, T> b) {
123 for (std::size_t i = 0; i < N; ++i) c.d[i] = a.d[i] * b.d[i];
127template <std::
size_t N,
typename T>
128Vector<N, T> operator+(Vector<N, T> a, Vector<N, T> b) {
130 for (std::size_t i = 0; i < N; ++i) c.d[i] = a.d[i] + b.d[i];
134template <std::
size_t N,
typename T>
135Vector<N, T> operator-(Vector<N, T> a, Vector<N, T> b) {
137 for (std::size_t i = 0; i < N; ++i) c.d[i] = a.d[i] - b.d[i];
141template <std::
size_t N,
typename T>
142Vector<N, T> operator/(Vector<N, T> a, Vector<N, T> b) {
144 for (std::size_t i = 0; i < N; ++i) c.d[i] = a.d[i] / b.d[i];