fork download
  1. #include <iostream>
  2. #include <vector>
  3. using namespace std;
  4.  
  5. struct Field2D {
  6. struct size_type {
  7. size_t dim1,dim2;
  8. };
  9. struct coordinates {
  10. size_t c1,c2;
  11. };
  12. Field2D(size_type const & siz) : size_(siz), data_(size_.dim1*size_.dim2) {}
  13. double get(coordinates const & coords) {
  14. return data_[coords.c1*size_.dim2 + coords.c2];
  15. }
  16. //Other methods
  17. private:
  18. size_type size_;
  19. vector<double> data_;
  20. };
  21.  
  22. struct PositionVersusTime : public Field2D {
  23. struct size_type { size_t nx, nt; };
  24. struct coordinates { size_t x, t; };
  25. PositionVersusTime(size_type const & siz) : Field2D({siz.nx, siz.nt}) { }
  26. double get(coordinates const & coords) { return Field2D::get({coords.x, coords.t}); }
  27. };
  28.  
  29. int main() {
  30. PositionVersusTime::size_type siz;
  31. siz.nx = 5;
  32. siz.nt = 2;
  33. PositionVersusTime myField(siz);
  34. PositionVersusTime::coordinates coords;
  35. coords.x = 2;
  36. coords.t = 0;
  37. auto out = myField.get(coords);
  38. return 0;
  39. }
Success #stdin #stdout 0s 4540KB
stdin
Standard input is empty
stdout
Standard output is empty