Advertisement
Guest User

Untitled

a guest
Dec 12th, 2017
59
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.65 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <tchar.h>
  3. #include <iostream>
  4. #include <string>
  5. #include <vector>
  6. #include <array>
  7. #include <deque>
  8. #include <list>
  9. #include <forward_list>
  10. #include <set>
  11. #include <unordered_set>
  12. #include <map>
  13. #include <unordered_map>
  14.  
  15. // CLASS_05a: przyklady kontenerow STL
  16.  
  17. // funkcja pomocnicza do drukowania zawartosci dowolnego kontenera
  18. template <typename T>
  19. void PrintContainer(T& cont)
  20. {
  21. for (auto& elem : cont) {
  22. std::cout << elem << " ";
  23. }
  24. std::cout << std::endl;
  25. }
  26.  
  27. // funkcja pomocnicza do drukowania zawartosci pary elementow
  28. template <typename T1, typename T2>
  29. std::ostream& operator<<(std::ostream& out, const std::pair<T1, T2>& pair) // output
  30. {
  31. out << "(" << pair.first << ", " << pair.second << ")";
  32. return out;
  33. }
  34.  
  35. int _tmain(int argc, _TCHAR* argv[])
  36. {
  37. // tablica z przykladowymi danymi
  38. int temp[6] = { 3, 5, 2, 6, 1, 4 };
  39.  
  40. std::cout << "====== kontenery sekwencyjne ======" << std::endl << std::endl;
  41.  
  42. std::vector<int> v;
  43. for (int i = 0; i < 6; ++i) {
  44. v.push_back(temp[i]);
  45. }
  46. std::cout << "vector - tablica dynamiczna o zmiennym rozmiarze, dostep losowy do zawartosci: " << std::endl;
  47. PrintContainer(v);
  48.  
  49. // rozmiar kontenera "array" musi byc znany w czasie kompilacji i jest podany jako parametr szablonu
  50. std::array<int, 6> a;
  51. for (int i = 0; i < 6; ++i) {
  52. a[i] = temp[i];
  53. }
  54. std::cout << "array - tablica o stalym rozmiarze, dostep losowy do zawartosci: " << std::endl;
  55. PrintContainer(a);
  56.  
  57. std::deque<int> d;
  58. for (int i = 0; i < 6; ++i) {
  59. d.push_front(temp[i]);
  60. }
  61. std::cout << "deque - lista dwukierunkowa z losowym dostepem do zawartosci: " << std::endl;
  62. PrintContainer(d);
  63.  
  64. std::list<int> l;
  65. for (int i = 0; i < 6; ++i) {
  66. l.push_front(temp[i]);
  67. }
  68. std::cout << "list - lista dwukierunkowa z sekwencyjnym dostepem do zawartosci: " << std::endl;
  69. PrintContainer(l);
  70.  
  71. std::forward_list<int> f;
  72. for (int i = 0; i < 6; ++i) {
  73. f.push_front(temp[i]);
  74. }
  75. std::cout << "forward_list - lista jednokierunkowa z sekwencyjnym dostepem do zawartosci: " << std::endl;
  76. PrintContainer(f);
  77.  
  78. std::cout << std::endl << "====== kontenery asocjacyjne ======" << std::endl << std::endl;
  79. std::set<int> s;
  80. for (int i = 0; i < 5; ++i) {
  81. s.insert(temp[i]);
  82. s.insert(temp[i + 1]);
  83. }
  84. std::cout << "set - zbior uporzadkowany, przechowuje unikalne, posortowane elementy: " << std::endl;
  85. PrintContainer(s);
  86.  
  87. std::multiset<int> ms;
  88. for (int i = 0; i < 5; ++i) {
  89. ms.insert(temp[i]);
  90. ms.insert(temp[i+1]);
  91. }
  92. std::cout << "multiset - zbior uporzadkowany, przechowuje posortowane elementy, ktore moga sie powtarzac: " << std::endl;
  93. PrintContainer(ms);
  94.  
  95. std::map<int, std::string> m;
  96. for (int i = 0; i < 5; ++i) {
  97. m.insert(std::make_pair(temp[i], std::to_string(temp[i])));
  98. m.insert(std::make_pair(temp[i + 1], std::to_string(temp[i + 1])));
  99. }
  100. std::cout << "map - zbior uporzadkowany, przechowuje unikalne, posortowane po kluczu pary elementow: " << std::endl;
  101. PrintContainer(m);
  102.  
  103. std::multimap<int, std::string> mm;
  104. for (int i = 0; i < 5; ++i) {
  105. mm.insert(std::make_pair(temp[i], std::to_string(temp[i])));
  106. mm.insert(std::make_pair(temp[i+1], std::to_string(temp[i+1])));
  107. }
  108. std::cout << "multimap - zbior uporzadkowany, przechowuje posortowane po kluczu pary elementow, klucze moga sie powtarzac: " << std::endl;
  109. PrintContainer(mm);
  110.  
  111. std::cout << std::endl << "====== kontenery nieuporzadkowane ======" << std::endl << std::endl;
  112. std::unordered_set<int> us;
  113. for (int i = 0; i < 5; ++i) {
  114. us.insert(temp[i]);
  115. us.insert(temp[i + 1]);
  116. }
  117. std::cout << "unordered_set - zbior nieuporzadkowany, przechowuje unikalne elementy: " << std::endl;
  118. PrintContainer(us);
  119.  
  120. std::unordered_multiset<int> ums;
  121. for (int i = 0; i < 5; ++i) {
  122. ums.insert(temp[i]);
  123. ums.insert(temp[i + 1]);
  124. }
  125. std::cout << "unordered_multiset - zbior nieuporzadkowany, przechowuje elementy, ktore moga sie powtarzac: " << std::endl;
  126. PrintContainer(ums);
  127.  
  128. std::unordered_map<int, std::string> um;
  129. for (int i = 0; i < 5; ++i) {
  130. um.insert(std::make_pair(temp[i], std::to_string(temp[i])));
  131. um.insert(std::make_pair(temp[i + 1], std::to_string(temp[i + 1])));
  132. }
  133. std::cout << "unordered_map - zbior nieuporzadkowany, przechowuje unikalne pary elementow: " << std::endl;
  134. PrintContainer(um);
  135.  
  136. std::unordered_multimap<int, std::string> umm;
  137. for (int i = 0; i < 5; ++i) {
  138. umm.insert(std::make_pair(temp[i], std::to_string(temp[i])));
  139. umm.insert(std::make_pair(temp[i+1], std::to_string(temp[i+1])));
  140. }
  141. std::cout << "unordered_multimap - zbior nieuporzadkowany, pary elementow, ktore moga sie powtarzac: " << std::endl;
  142. PrintContainer(umm);
  143.  
  144. return 0;
  145. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement