RoNgDaZhOnG

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

定义一个multiset集合S:
multiset <int> S;
如果有重复元素一定要记得使用multiset,stl set默认从小到大排序,upper_bound(x)返回集合中第一个大于x的元素地址,lower_bound(x)返回集合中第一个大于等于x的元素地址。
我们可以这样定义一个迭代器:multiset<int>::iterator it;
it指向一个内存地址,我们可以使it=S.begin();
如果要求it所指向元素的后继,可以it++。要求前驱可以it--。
则如果要求集合中第一个小于等于x的元素可以使:{it=S.upper_bound(X);it--;}(注意不要使it越界)
S.insert(X)     //插入一个元素X
S.clear()        //清空集合S
S.size()         //返回集合中元素的个数
S.empty()    //返回一个bool值表示集合是否为空

注意:erase()函数非常的坑。。
S.erase(X)    若X为一个元素的内存地址则删除这个内存地址上的元素
                    若X为一个元素,则删除S中所有等于这个元素的元素(注意是所有)

从小到大遍历整个集合S
multiset<int>::iterator it;
for(it=S.begin();it!=S.end();it++){             //注意结束条件是it!=S.end(),而不是<
        cout<<(*it)<<endl;
}

集合S中的最后一个元素:
 it=S.end();it--;                 //S.end()并不是S中最后一个元素的地址,所以要记得it--
 cout<<(*it)<<endl;

posted on 2017-03-12 09:31  学无止境-1980  阅读(171)  评论(0编辑  收藏  举报