fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define fst first
  5. #define snd second
  6.  
  7. typedef long long ll;
  8. typedef pair<int, int> ii;
  9.  
  10. const ll LINF = (ll)1e18;
  11. const int INF = (int)1e9;
  12.  
  13. // multiset<int> t;
  14. // các tính chất tương tự set nhưng có thể lưu các phần tử có giá trị trùng lặp
  15.  
  16. int main() {
  17. ios::sync_with_stdio(0);
  18. cin.tie(0);
  19. set<int> s; // tập hợp, cây đỏ đen, cây tìm kiếm nhị phân
  20. // thêm xoá trong O(log) (một điểm mạnh vượt trội so với vector (thêm xoá O(n)))
  21.  
  22. // tính chất:
  23. // + chỉ thao tác trên con trỏ, không thể thao tác trên chỉ số như vector hay mảng bình thường
  24. // + tự động sắp xếp mỗi khi chỉnh sửa (thêm, xoá) (mặc định: tăng dần)
  25. // + các phần tử không được trùng lặp giá trị (set sẽ tự loại bỏ những phần tử trùng lặp)
  26.  
  27. vector<int> a = {1, 5, 10, 7, 20};
  28. s = set<int>(a.begin(), a.end());
  29.  
  30. cout << "Cac gia tri co trong s: \n";
  31. for (auto it : s) cout << it << ' '; cout << '\n';
  32.  
  33. // s = {1, 2, 3, 4, 5};
  34. // >
  35.  
  36. set<int>::iterator it;
  37. // it = s.find(6); // O(log) // nếu tồn tại giá trị x thì trả về con trỏ trỏ tới x, ngược lại trả về set.end()
  38.  
  39. // if (it == s.end()) cout << "khong ton tai gia tri trong s" << '\n';
  40. // else cout << *it << '\n';
  41.  
  42. // lower_bound, upper_bound (>=, > như bên vector)
  43. // int x = 4;
  44. // it = s.lower_bound(x);
  45. // auto it1 = s.upper_bound(x);
  46.  
  47. // hoàn toàn thao tác trên con trỏ và giá trị, không liên quan gì đến chỉ số cả (một hạn chế so với vector)
  48.  
  49. // Hai hàm làm nên tên tuổi: insert, erase O(log)
  50. // s.insert(4);
  51. // cout << "s sau khi them gia tri 4\n";
  52. // for (auto it : s) cout << it << ' ';
  53. // cout << '\n';
  54.  
  55. // it = s.find(4);
  56. // s.erase(it);
  57. // cout << "s sau khi xoa gia tri 4\n";
  58. // for (auto it : s) cout << it << ' ';
  59. }
Success #stdin #stdout 0.01s 5280KB
stdin
Standard input is empty
stdout
Cac gia tri co trong s: 
1 5 7 10 20