fork download
  1. #include <vector>
  2. #include <string>
  3. #include <algorithm>
  4.  
  5. class BlockRepresentation
  6. {
  7. private:
  8. class Block
  9. {
  10. public:
  11. int id;
  12. int fpDimensions;
  13. int *position;
  14. int *blockDimensions;
  15.  
  16. Block() : position(nullptr), blockDimensions(nullptr),
  17. id(0), fpDimensions(0) {}
  18. ~Block()
  19. {
  20. delete [] position;
  21. delete [] blockDimensions;
  22. }
  23.  
  24. Block(const Block& rhs) : id(rhs.id), fpDimensions(rhs.fpDimensions),
  25. position(new int[rhs.fpDimensions]),
  26. blockDimensions(new int[rhs.fpDimensions])
  27. {
  28. std::copy(rhs.position, rhs.position + fpDimensions, position);
  29. std::copy(rhs.blockDimensions, rhs.blockDimensions + fpDimensions,
  30. blockDimensions);
  31. }
  32.  
  33. Block& operator=(const Block& rhs)
  34. {
  35. Block temp(rhs);
  36. std::swap(temp.position, position);
  37. std::swap(temp.blockDimensions, blockDimensions);
  38. std::swap(temp.id, id);
  39. std::swap(temp.fpDimensions, fpDimensions);
  40. return *this;
  41. }
  42. };
  43. std::vector<Block> all_blocks;
  44. public:
  45. BlockRepresentation() {}
  46. void AddBlock( int id, int fpDimensions, int position[], int dimensions[] );
  47. std::string ToGPL();
  48. };
  49.  
  50. void BlockRepresentation::AddBlock( int id, int fpDimensions, int position[], int dimensions[] )
  51. {
  52. Block newBlock;
  53. newBlock.id = id;
  54. newBlock.fpDimensions = fpDimensions;
  55. newBlock.position = new int[fpDimensions]; // pointers in question
  56. newBlock.blockDimensions = new int[fpDimensions]; // pointers in question
  57.  
  58. for (int i = 0; i < fpDimensions; ++i)
  59. {
  60. newBlock.position[i] = position[i];
  61. newBlock.blockDimensions[i] = dimensions[i];
  62. }
  63. all_blocks.push_back( newBlock );
  64. }
  65.  
  66. int main()
  67. {
  68. int x[] = {1,2,3,4,5};
  69. int y[] = {2,4,6,8,10};
  70. BlockRepresentation br;
  71. br.AddBlock(1,5,x,y);
  72. br.AddBlock(2,5,y,x);
  73. }
Success #stdin #stdout 0s 3456KB
stdin
Standard input is empty
stdout
Standard output is empty