fork(2) download
  1. // set-ын талаар үзэх болно.
  2. #include <set> // set-ын функцууд агуулдаг сан
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. int main() {
  7. /*
  8. set гэдэг нь элемэнтүүдийн эрэмбэлж халгалдаг зүйл юм.
  9. мөн давхардлыг арилгадаг. элемэнт нэмэх мөн устгахад
  10. LogN үйлдэл шаарддаг ба N нь set байгаа элемэнтийн тоо юм.
  11. энэ нь цаанаа өөр зүйл ашигладаг(2тын мод) тул бид 3р
  12. элемэнтийн утганд шууд хандаж чадахгүй. Харин map-ын
  13. адил iterator ашигладаг.
  14. */
  15. set<int> s; // int төрлийн утга авлаг set анх хоосон байгаа
  16. set<int>::iterator it; // int төрлийн утга авдаг set-ын заагч
  17.  
  18. s.insert( 222 ); // set-д элемэнт нэмэх
  19. s.insert( 111 ); // set-д элемэнт нэмэх
  20.  
  21. for( it = s.begin(); it != s.end(); it++) {
  22. // set-д байгаа бүх элемэнтийг хэвлэж байна
  23. cout << *it << " ";
  24. // it-нь заагч тул бид элемэнтийг утгыг хэвлэхийн тул *
  25. // тавьж мэднэ
  26. }
  27.  
  28. cout << "\n----------------------------------\n";
  29.  
  30. int n = s.size(); // одоо байгаа элемэнтийн хэмжээ
  31. cout << n << endl;
  32.  
  33. cout << "----------------------------------\n";
  34.  
  35. s.insert( 111 ); // энэ элемэнт байгаа тул хэмжээ өөрчлөгдөхгүй
  36. n = s.size();
  37. cout << n << endl;
  38. cout << "----------------------------------\n";
  39.  
  40. s.insert( 22 );
  41. s.insert( 12 );
  42.  
  43. for( it = s.begin(); it != s.end(); it++) {
  44. // set-д байгаа бүх элемэнтийг хэвлэж байна
  45. cout << *it << " ";
  46. // it-нь заагч тул бид элемэнтийг утгыг хэвлэхийн тул *
  47. // тавьж мэднэ
  48. }
  49. cout << "\n----------------------------------\n";
  50.  
  51. s.erase( 22 ); // 22 гэсэн элемэнтийг устгаж байна
  52. // хэрвээ байхгүй бол юуг ч устгахгүй
  53. for( it = s.begin(); it != s.end(); it++) {
  54. // set-д байгаа бүх элемэнтийг хэвлэж байна
  55. cout << *it << " ";
  56. // it-нь заагч тул бид элемэнтийг утгыг хэвлэхийн тул *
  57. // тавьж мэднэ
  58. }
  59. cout << "\n----------------------------------\n";
  60.  
  61. it = s.lower_bound( 12 );// 12-оос их буюу тэнцүү хамгийн бага
  62. // элемэнтийн байрлалыг буцаана. Хэрвээ
  63. // бүх элемэнт 12 бага бол size буюу
  64. // төгсгөлийн буцаана.
  65. cout << *it << "\n----------------------------------\n";
  66.  
  67. it = s.upper_bound( 12 ); // 12-оос эрс их хамгийн бага
  68. // элемэнтийн байрлалын буцаана. Хэрвээ
  69. // бүх элемэнт 12 бага бол size буюу
  70. // төгсгөлийн буцаана.
  71. cout << *it << "\n----------------------------------\n";
  72.  
  73. s.erase( it ); // it-ын зааж байгаа элемэнтийг устгана.
  74. for( it = s.begin(); it != s.end(); it++) {
  75. // set-д байгаа бүх элемэнтийг хэвлэж байна
  76. cout << *it << " ";
  77. // it-нь заагч тул бид элемэнтийг утгыг хэвлэхийн тул *
  78. // тавьж мэднэ
  79. }
  80. cout << "\n----------------------------------\n";
  81. return 0;
  82. }
Success #stdin #stdout 0s 4400KB
stdin
Standard input is empty
stdout
111 222 
----------------------------------
2
----------------------------------
2
----------------------------------
12 22 111 222 
----------------------------------
12 111 222 
----------------------------------
12
----------------------------------
111
----------------------------------
12 222 
----------------------------------