关联容器(set,multiset)

1. 关联容器

  • 内部元素有序排列,查找速度快
  • 除和顺序容器共有的成员函数外,还支持以下成员函数:
    find: 查找等于某个元素的值(x<y&&x>y同时为false)
    lower_bound: 查找某个下界
    upper_bound: 查找某个上界
    **equal_range:**同时查找上界和下界
    count: 计算等于某个值的元素个数
    insert: 用于插入一个元素和一个区间

2.set/multiset

set和multiset的差别仅在于,set不允许有重复元素,multiset允许。

  • 示例
#include <iostream>
#include <set>
using namespace std;

template<class T>
void print(T first, T last){
   for(;first!=last;++first) cout<<*first<<" ";
   cout<<endl;
}
int main()
{
   typedef set<int>::iterator IT;
   int a[5] = {4,6,1,3,2};
   set<int> b(a,a+5);
   print(b.begin(),b.end());
   pair<IT, bool> result;
   result = b.insert(5);
   if(result.second) cout<<*result.first<<" inserted"<<endl;
   if(b.insert(5).second) cout<<*result.first<<" inserted"<<endl;
   else cout<<*result.first<<" alreadly exerts"<<endl;
   pair<IT, IT> bounds = b.equal_range(4);
   cout<<*bounds.first<<" "<<*bounds.second;
   return 0;
}

输出结果
1 2 3 4 6
5 inserted
5 alreadly exerts
4 5

成员函数

iterator find(const T &val);
//查找值为val的元素,返回其迭代器。若找不到,返回end().
iterator insert(const T &val);
//将val插入到容器中,并返回其迭代器。
void insert(iterator first, iterator last);
//将区间[first,last)插入容器
int count(const T &val);
//统计有多少个元素的值和val相等
 iterator lower_bound(const T &val);
 //查找一个最大位置it,使得[begin(),it)中所有的元素都比val小
 iterator upper_bound(const T &val);
  //查找一个最小位置it,使得[it,end())中所有的元素都比val大
  pair<iterator,iterator> equal_range(const T &val);
  //同时求得lower_bound和upper_bound
  iterator erase(iterator it);
  //删除it指向的元素,返回其后面元素的迭代器(VS上是如此,但DEV上不是这样)
全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务