avukas

kontinualna alokacija 5. sa sestog

Apr 27th, 2014
58
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.68 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <new>
  4. #include <stdexcept>
  5.  
  6. template<typename NekiTip>
  7.  
  8. NekiTip **grbavamatrica(std::vector<std::vector<NekiTip>> matrica)
  9.  
  10. {
  11.  
  12. try
  13. {
  14. NekiTip **alocmatrica(new NekiTip *[matrica.size()]);
  15. alocmatrica[0]=new NekiTip [matrica.size()*matrica[0].size()];
  16. for (int i(0); i<matrica.size(); i++)
  17. alocmatrica[i]=alocmatrica[i-1]+matrica[i].size();
  18.  
  19.  
  20. for (int i(0); i<matrica.size(); i++)
  21. alocmatrica[i]=nullptr;
  22. try
  23. {
  24. for (int i(0); i<matrica.size(); i++)
  25.  
  26. alocmatrica[i]=new int[matrica[i].size()];
  27.  
  28. for (int i(0); i<matrica.size(); i++)
  29. {
  30. for (int j(0); j<matrica[i].size(); j++)
  31. {
  32. alocmatrica[i][j]=matrica[i][j]; }
  33. }
  34.  
  35. }
  36. catch(std::bad_alloc)
  37. {
  38. for (int i(0); i<matrica.size(); i++)
  39. {
  40. delete [] alocmatrica[0];
  41. delete [] alocmatrica;
  42.  
  43. }
  44. throw;
  45. }
  46. return alocmatrica;
  47. }
  48. catch(std::bad_alloc)
  49. {
  50. throw;
  51. }
  52.  
  53.  
  54.  
  55. }
  56.  
  57.  
  58. int main()
  59. {
  60. try
  61. {
  62.  
  63.  
  64. std::vector<std::vector<int>> matrica{{1,2,5,5},{1,3,5,5,3,2,1}, {5,6,3}};
  65.  
  66. int **matrica1=grbavamatrica(matrica);
  67.  
  68. for (int i(0); i<matrica.size(); i++)
  69. {
  70. for (int j(0); j<matrica[i].size(); j++)
  71. {
  72. std::cout<<matrica1[i][j];
  73. }
  74. std::cout<<std::endl;
  75. }
  76.  
  77. }
  78. catch(...)
  79. {
  80. std::cout<<"Alokacija nije uspjela. \n";
  81. }
  82. return 0;
  83. }
Advertisement
Add Comment
Please, Sign In to add comment