Advertisement
Caminhoneiro

Structures

Jun 5th, 2019
125
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 5.49 KB | None | 0 0
  1.  
  2. //*****************DATA STRUCTURES***************//
  3.  
  4. //***Vector
  5. //
  6. //**Popular methods
  7. //
  8. //push_back()               0(1) = constant
  9. //[] brackets operator      0(1) = constant
  10. //size()                    0(1) = constant
  11.  
  12. void Vector()
  13. {
  14.     vector<int> v;                  //v{}
  15.     cout << v.size() << "\n";       //output 0
  16.     v.push_back(20);            //v = {20}
  17.     v.push_back(10);            //v = {20,10}
  18.     v.push_back(10);            //v = {20,10, 10}
  19.     cout << v[1];                   //output 10
  20.     cout << v.size();               //output 3
  21. };
  22.  
  23.  
  24. //***Set
  25. //
  26. //**Popular methods
  27. //
  28. //insert()              0(logn)
  29. //find()                0(logn)
  30. //size()                0(1) = constant
  31.  
  32. #include <set>
  33. using std::set;
  34. void Set()
  35. {
  36.     set<int> s;                                 //s{}
  37.     cout << s.size();                           //outputs 0
  38.     s.insert(20);                               //s = {20}
  39.     s.insert(10);                               //s = {10, 20}
  40.     s.insert(10);                               //s = {10, 20}
  41.     auto it = s.find(10);                       //it is an iterator that points to 10
  42.     cout << (it != s.end() ? " FOUND" : " ");   //outputs FOUND
  43.     cout << s.size();                           //output 2
  44. }
  45.  
  46.  
  47. //***Unordered Set
  48. //
  49. //**Popular methods
  50. //
  51. //insert()              0(1)
  52. //find()                0(1)
  53. //size()                0(1) = constant
  54.  
  55.  
  56. #include <unordered_set>
  57. using std::unordered_set;
  58. void UnorderedSet()
  59. {
  60.     unordered_set<int> s;                           //s{}
  61.     cout << s.size();                               //outputs 0
  62.     s.insert(20);                               //s = {20}
  63.     s.insert(10);                               //s = {10, 20}  //Could be in any order//
  64.     s.insert(10);                               //s = {10, 20}
  65.     auto it = s.find(10);                       //it is an iterator that points to 10
  66.     cout << (it != s.end() ? " FOUND" : " ");       //outputs FOUND
  67.     cout << s.size();                               //output 2
  68. }
  69.  
  70.  
  71. //***Map
  72. //
  73. //**Popular methods
  74. //
  75. //insert()                  0(logn) insert using make_pair
  76. //find()                    0(logn) returns pair
  77. //[] brackets operations    0(logn) returns ref to value
  78. //size()                    0(1)
  79.  
  80. using std::map;
  81. using std::make_pair;
  82.  
  83. void Map()
  84. {
  85.     map<int, int> m;                            //m={}
  86.     cout << m.size();                           //outputs 0
  87.     m.insert(make_pair(20, 1));                 //m={(20,1)}
  88.     m.insert(make_pair(10, 1));                 //m={(10,1), (20,1)}
  89.     m[10]++;                                    //m={(10,2), (20,1)}
  90.     auto it = m.find(10);                   //it is an iterator that points to (10, 2)
  91.     cout << (it != m.end() ? it->second : 0);   //outputs 2
  92.     auto it2 = m.find(20);              //it is an iterator that points to (20, 1)
  93.     cout << (it2 != m.end() ? it2->first : 0);  //outputs 20
  94.     cout << m.size();                           //outputs 2    
  95. }
  96.  
  97.  
  98. //***Unordered Map
  99. //
  100. //**Popular methods
  101. //
  102. //insert()                  0(1)    insert using make_pair
  103. //find()                    0(1)    returns pair
  104. //[] brackets operations    0(1)    returns ref to value
  105. //size()                    0(1)
  106.  
  107. #include<unordered_map>
  108. using std::unordered_map;
  109. void UnorderedMap()
  110. {
  111.     unordered_map<int, int> m;                  //m={}
  112.     cout << m.size();                           //outputs 0
  113.     m.insert(make_pair(20, 1));                 //m={(20,1)}
  114.     m.insert(make_pair(10, 1));                 //m={(10,1), (20,1)}    //Could in any order
  115.     m[10]++;                                    //m={(10,2), (20,1)}
  116.     auto it = m.find(10);                   //it is an iterator that points to (10, 2)
  117.     cout << (it != m.end() ? it->second : 0);   //outputs 2
  118.     auto it2 = m.find(20);              //it is an iterator that points to (20, 1)
  119.     cout << (it2 != m.end() ? it2->first : 0);  //outputs 20
  120.     cout << m.size();                           //outputs 2    
  121. }
  122.  
  123. //**************STACK
  124. //          LIFO data structure
  125. //**Popular methods
  126. //
  127. //push()            0(1)*  the star is because push complexity is acctually equivalent to the push_back on the line container
  128. //pop()             0(1)
  129. //top()             0(1)
  130. //size()            0(1)
  131.  
  132. #include<stack>
  133.  
  134. using std::stack;
  135.  
  136. void Stack()
  137. {
  138.     stack<int> s;
  139.     cout << s.size(); //Outputs 0
  140.     s.push(1);
  141.     s.push(2);
  142.     cout << s.top(); //outputs 2
  143.     s.pop();
  144.     cout << s.top(); //outputs 1
  145.     cout << s.size();//outputs 1
  146. };
  147.  
  148. //**************QUEUE
  149. //          FIFO data structure
  150. //**Popular methods
  151. //
  152. //push()            0(1)*
  153. //pop()             0(1)
  154. //front()           0(1)
  155. //size()            0(1)
  156.  
  157. #include <queue>
  158. using std::queue;
  159.  
  160. void Queue()
  161. {
  162.     queue<int>q;
  163.     cout << q.size();//0
  164.     q.push(1);
  165.     q.push(2);
  166.     cout << q.front();//1
  167.     q.pop();
  168.     cout << q.front();//2
  169.     cout << q.size();//1
  170. };
  171.  
  172. //**************PRIORITY QUEUE
  173. //Excentially a Heap
  174. //
  175. //**Popular methods
  176. //
  177. //push()            0(logn) When you call push you make 1 call to push_back(), 1 call to push_heap()
  178. //pop()             0(logn) 1 call to pop_heap(), 1 call to pop_back()
  179. //top()             0(1)
  180. //size()            0(1)
  181.  
  182. #include <concurrent_priority_queue.h>
  183. using std::priority_queue;
  184.  
  185. void PriorityQueue()
  186. {
  187.     priority_queue<int> pq;
  188.     cout << pq.size();  //0
  189.     pq.push(3);
  190.     pq.push(1);
  191.     pq.push(2);
  192.     cout << pq.top();   //3
  193.     pq.pop();
  194.     cout << pq.top();   //2 - It shows the number by priority greater to lower.
  195.     cout << pq.size();  //2
  196. };
  197.  
  198.  
  199. //***Multi Set
  200. //
  201. //**Popular methods
  202. //
  203. //insert()              0(logn)
  204. //find()                0(logn)
  205. //size()                0(1)
  206.  
  207. using std::multiset;
  208.  
  209. void MultiSet()
  210. {
  211.     multiset<int> ms;                               //s{}
  212.     cout << ms.size();                              //outputs 0
  213.     ms.insert(1);                               //s = {1}
  214.     ms.insert(2);                               //s = {1, 2}   
  215.     ms.insert(1);                               //s = {1, 1, 2} //Auto sort order
  216.     auto it = ms.find(1);
  217.     cout << (it != ms.end() ? " FOUND" : " ");      //outputs FOUND
  218.     cout << ms.size();                              //output 3
  219. };
  220.  
  221. //***MultiMap
  222. //
  223. //**Popular methods
  224. //
  225. //insert()                  0(logn) insert using make_pair
  226. //find()                    0(logn) returns pair
  227. //size()                    0(1)
  228. using std::multimap;
  229. void MultiMap()
  230. {
  231.     multimap<int, int> mm;                  //m={}
  232.     cout << mm.size();                      //outputs 0
  233.     mm.insert({ 1,2 });                     //mm={(1,2)}
  234.     mm.insert({ 2,4 });                     //mm={(1,2), (2,4)}
  235.     mm.insert({ 1,3 });                     //mm={(1,2), (1,3), (2,4)}  //Auto sort order
  236.     auto it = mm.find(2);
  237.     cout << (it != mm.end() ? it->second : 0);  //outputs 4
  238.     cout << mm.size();                          //outputs 3    
  239. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement