split mapping.hpp into tuple.hpp and vector.hpp