1 #include <iostream> 2 //红黑树(自动保证平衡,自动生成平衡查找树) 3 #include <set> 4 #include <cstring> 5 #include <cstdlib> 6 using namespace std; 7 8 //红黑树增删查改 9 void main1() 10 { 11 set<int> myset{ 1,2,10,3,5 }; 12 myset.insert(14); 13 myset.insert(15); 14 //重复的数据会被忽略 15 myset.insert(15); 16 17 //中序遍历 18 for (auto i : myset) 19 { 20 cout << i << endl; 21 } 22 23 //正向迭代 24 for (auto ib = myset.begin(), ie = myset.end(); ib != ie; ib++) 25 { 26 cout << *ib << endl; 27 } 28 29 //反向迭代 30 for (auto rb = myset.rbegin(), re = myset.rend(); rb != re; rb++) 31 { 32 cout << *rb << endl; 33 } 34 35 auto it = myset.find(14); 36 if (it != myset.end()) 37 { 38 cout << "find" << *it << endl; 39 //不能修改 40 //*it = 9; 41 //删除 42 myset.erase(it); 43 //或者 44 //myset.erase(10); 45 } 46 else 47 { 48 cout << "not find" << *it << endl; 49 } 50 51 //元素个数 52 myset.size(); 53 //清空 54 myset.empty(); 55 cin.get(); 56 } 57 58 struct strless 59 { 60 bool operator()(const char *str1, const char *str2) 61 { 62 return (strcmp(str1, str2) < 0); 63 } 64 }; 65 66 void main() 67 { 68 const char *p[] = { "calc","notepad","run","go" ,"123"}; 69 //设置比较函数 前边是类型,后边是比较的函数 70 set<const char *, strless> myset(p, p + 5, strless()); 71 myset.insert("234"); 72 73 for (auto i : myset) 74 { 75 cout << i << endl; 76 } 77 cin.get(); 78 }