Guest User

Untitled

a guest
Jun 20th, 2018
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.65 KB | None | 0 0
  1. #include <iostream>
  2. #include <sstream>
  3. #include <string>
  4. #include <stdexcept>
  5.  
  6. #include "dynamicarray.h"
  7.  
  8. const unsigned int DynamicArray::BLOCK_SIZE = 10;
  9.  
  10. DynamicArray::DynamicArray():
  11. array(allocate(blockSize())), length(blockSize())
  12. {
  13. }
  14.  
  15. DynamicArray::DynamicArray(int _length):
  16. array(allocate(_length)), length(_length)
  17. {
  18. }
  19.  
  20. DynamicArray::DynamicArray(const DynamicArray &da):
  21. array(allocate(da.length)),length(da.length)
  22. {
  23. for( int i = 0; i < length; i++)
  24. {
  25. set(i, da.get(i));
  26. }
  27. }
  28.  
  29. int DynamicArray::blockSize() const {
  30. return DynamicArray::BLOCK_SIZE;
  31. }
  32.  
  33. std::ostringstream& DynamicArray::printOn(std::ostringstream & os) {
  34.  
  35. os << "[";
  36. for (int i = 0; i < length; i++) {
  37. os << array[i] << " ";
  38. }
  39. os << "]";
  40. return os;
  41. }
  42.  
  43. int DynamicArray::size() const {
  44. return length;
  45. }
  46.  
  47. void DynamicArray::set(int pos, int value) {
  48. assertIndex(pos);
  49. array[pos] = value;
  50. }
  51.  
  52. int DynamicArray::get(int pos) const {
  53. assertIndex(pos);
  54.  
  55. return array[pos];
  56. }
  57.  
  58. void DynamicArray::grow() {
  59.  
  60. int* newarray = allocate(length + blockSize());
  61.  
  62.  
  63. for(int i = 0; i < length; i++)
  64. {
  65. newarray[i] = get(i);
  66. }
  67. length += blockSize();
  68. array = newarray;
  69. }
  70.  
  71. int* DynamicArray::allocate(unsigned int size) const {
  72. int* newarray = new int[size];
  73. for(unsigned int i = 0; i < size; i++)
  74. {
  75. newarray[i] = 0;
  76. }
  77. return newarray;
  78. }
  79.  
  80. void DynamicArray::assertIndex(int pos) const
  81. {
  82. if (pos > length || pos < 0)
  83. throw std::out_of_range("Position hors tableau");
  84.  
  85. }
  86.  
  87. int & DynamicArray::operator [](int pos){
  88. return array[pos];
  89. }
  90.  
  91. DynamicArray & DynamicArray::operator =(DynamicArray & da){
  92. return *(new DynamicArray(da));
  93. }
  94.  
  95. DynamicArray::~DynamicArray()
  96. {
  97. if(array != NULL)
  98. delete [] array;
  99.  
  100. }
Add Comment
Please, Sign In to add comment