C语言中set集合容器具体用法有哪些详细解析?

摘要:1.简介 set是C++STL库中的一个容器,他十分的便利,所有的元素插入时都会被自动排序,并且容器内保证元素不重复,就想高一数学中讲的集合具有互异性一样,(好像set本来就叫集合容器 bushi)2.本
1.简介   set是C++STL库中的一个容器,他十分的便利,所有的元素插入时都会被自动排序,并且容器内保证元素不重复,就想高一数学中讲的集合具有互异性一样,(好像set本来就叫集合容器 bushi) 2.本质   set属于关联式容器,使用类似书的结构(基于红黑树的平衡二叉检索树)如图: 3.用处   构造set的主要目的就是为了快速检索和去重(检索的时间复杂度为O(logN)); 4.set容器的使用   主要的函数如下:     insert() set容器唯一的插入数据的方式;     用法:   1 set<int> s; 2 s.insert(1);     size() 判断容器中的元素数目;     用法: 1 set<int> s; 2 for (int i=1;i<3;i++) 3 s.insert(i); 4 s.size();     empty() 判断容器是否为空;     用法:  1 set<int> s; 2 if(s.empty()){ 3 break; 4 {     erase(pos) 删除迭代器所指的元素,并返回下一个元素的迭代器;     用法: 1 set<int> s; 2 s.erase(s.begin());     find(key) 查找key这一元素书否存在,若存在,则返回该贱键的元素的迭代器,否则,则返回set.end();     用法: 1 set<int> s; 2 for (int i=1;i<=5;i++){ 3 s.insert(i); 4 } 5 set<int>::iterator ii; 6 ii = s.find(2); 7 if (ii != s.end()) 8 cout<<*ii<<endl;     count(key) 检索容器中key的元素个数,但刚才都说了元素插入set后会自动去重,所以返回的值只有0或1罢了(     另外,set容器本质是棵二叉树,所以检索的时间复杂度只有O(logN),比STL里的其他容器快好多。     用法: cout<<s.count(1)<<endl; 5.迭代器   访问set集合容器中的元素,需要通过迭代器进行,他类似于指针,可以通过他来指向set中的某一元素的地址。例如: set<int>::iterator ii;   就定义了一个set<int>类型的正向迭代器 ii。   迭代器分正向迭代器和反向迭代器,顾名思义,就是正向遍历和反向遍历的意思。 6.思考 自己找题吧,我找不到了(