fork download
  1. #include <iostream>
  2. #include <memory>
  3. #include <complex>
  4.  
  5. class Slice{
  6. public:
  7. Slice(unsigned long Nx, unsigned long Ny) :
  8. nx(Nx),
  9. ny(Ny),
  10. data(std::make_shared<std::complex<double>[]>(Nx*Ny))
  11. {}
  12.  
  13. Slice(unsigned long Nx, unsigned long Ny, std::shared_ptr<std::complex<double>[]> data) :
  14. nx(Nx),
  15. ny(Ny),
  16. data(data)
  17. {}
  18.  
  19. private:
  20. unsigned long nx;
  21. unsigned long ny;
  22. std::shared_ptr<std::complex<double>[]> data;
  23. };
  24.  
  25. class Volume{
  26. public:
  27. Volume(unsigned long Nx, unsigned long Ny, unsigned long Nz) :
  28. nx(Nx),
  29. ny(Ny),
  30. nz(Nz),
  31. data(std::make_shared<std::complex<double>[]>(Nx * Ny * Nz))
  32. {
  33. }
  34.  
  35. Slice get_slice(unsigned long zindex)
  36. {
  37. return Slice(nx, ny, std::shared_ptr<std::complex<double>[]>(data, &data[zindex * nx * ny]));
  38. }
  39. private:
  40. // DATA:
  41. unsigned long nx;
  42. unsigned long ny;
  43. unsigned long nz;
  44. std::shared_ptr<std::complex<double>[]> data;
  45. };
  46.  
  47.  
  48.  
  49. int main(){
  50. unsigned long Nx = 1;
  51. unsigned long Ny = 2;
  52. unsigned long Nz = 3;
  53.  
  54. Volume testVolume(Nx,Ny,Nz);
  55. /* initialise data in testVolume */
  56. Slice slice = testVolume.get_slice(1);
  57. }
  58.  
Success #stdin #stdout 0s 4356KB
stdin
Standard input is empty
stdout
Standard output is empty