1#ifndef CONTAINER_OPERATOR_H
2#define CONTAINER_OPERATOR_H
9std::vector<T>
operator + (
const std::vector<T> & x1,
const std::vector<T> & x2 )
11 assert(x1.size()==x2.size());
13 for(std::size_t i=0; i!=x1.size(); ++i )
14 x.push_back(x1[i]+x2[i]);
19std::vector<T>
operator - (
const std::vector<T> & x1,
const std::vector<T> & x2 )
21 assert(x1.size()==x2.size());
23 for(std::size_t i=0; i!=x1.size(); ++i )
24 x.push_back(x1[i]-x2[i]);
28template<
typename T1,
typename T2 >
29std::map<T1,T2>
operator + (
const std::map<T1,T2> & x1,
const std::map<T1,T2> & x2 )
31 assert(x1.size()==x2.size());
33 for(
const auto &x1i : x1 )
34 x.insert(std::make_pair( x1i.first, x1i.second + x2.at(x1i.first) ));
38template<
typename T1,
typename T2 >
39std::map<T1,T2>
operator - (
const std::map<T1,T2> & x1,
const std::map<T1,T2> & x2 )
41 assert(x1.size()==x2.size());
43 for(
const auto &x1i : x1 )
44 x.insert(std::make_pair( x1i.first, x1i.second - x2.at(x1i.first) ));
48template<
typename T1,
typename T2 >
49std::vector<T2>
operator * (
const T1 & x1,
const std::vector<T2> & x2 )
52 for(std::size_t i=0; i!=x2.size(); ++i )
53 x.push_back(x1*x2[i]);
57template<
typename T1,
typename T21,
typename T22 >
58std::map<T21,T22>
operator * (
const T1 & x1,
const std::map<T21,T22> & x2 )
61 for(
const auto & x2i : x2 )
62 x.insert(std::make_pair( x2i.first, x1*x2i.second ));
std::vector< T > operator-(const std::vector< T > &x1, const std::vector< T > &x2)
Definition container_operator.h:19
std::vector< T > operator+(const std::vector< T > &x1, const std::vector< T > &x2)
Definition container_operator.h:9
std::vector< T2 > operator*(const T1 &x1, const std::vector< T2 > &x2)
Definition container_operator.h:49