shape.hpp 617 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. #ifndef SHAPE_HPP
  2. #define SHAPE_HPP
  3. #include "debug.hpp"
  4. class Shape{
  5. private:
  6. size_t dim;
  7. size_t* n;
  8. public:
  9. Shape(size_t n);
  10. Shape(size_t n1,size_t n2);
  11. Shape(size_t n1,size_t n2,size_t n3);
  12. size_t size() const;
  13. };
  14. inline
  15. Shape::Shape(size_t n1){
  16. dim=1;
  17. n=new size_t[1];
  18. n[0]=n1;
  19. }
  20. inline
  21. Shape::Shape(size_t n1,size_t n2){
  22. dim=2;
  23. n=new size_t[2];
  24. n[0]=n1;n[1]=n2;
  25. }
  26. inline
  27. Shape::Shape(size_t n1,size_t n2,size_t n3){
  28. dim=3;
  29. n=new size_t[3];
  30. n[0]=n1;n[1]=n2,n[2]=n3;
  31. }
  32. inline size_t
  33. Shape::size() const{
  34. size_t s=1;
  35. for(size_t d=0;d<dim;++d) s*=n[d];
  36. return s;
  37. }
  38. #endif