STL小记——set/multiset、map/mutlimap

set:

  • 所有元素在插入时自动排序;
  • 关联式容器;
  • 底层结构——二叉树;

 

set——不允许有重复元素

multiset——允许容器中有重复元素

 

构造:

  set<T> st;

  set(const set &st);

赋值:

  set& operator=(const set &st);

插入:  

  只有insert()

删除:

  clear();

  erase(pos);

  erase(begin,end);

  erase(ele);  //相当于list中的remove(ele);

set大小操作:

  empty();

  size();——不支持resize()

交换:

  swap(st);

查找:

  find(key);  //查找key是否存在,存在,返回该元素的迭代器;不存在,返回set.end();

统计:

  count(key);  //统计key的元素个数——要么是0,要么是1  

 修改set容器排序:

class compare

{

public:

  bool operator()(int v1,int v2) const

  {

    return v1>v2;  //从大到小排序

  }

};

set<int, compare> s2;  //此时的排序规则由从小到大变为从大到小排序

 set中使用自定义数据类型时必须通过仿函数(class)指定排序规则

 

 map:

  • 所有元素都是pair(成对的——<key,value>
  • map中所有元素根据key自动排序(从小到大
  • 关联式容器,底层结构:二叉树
  • 可以根据key值快速找到对应的value
  • 不存在重复数据(multimap可以存放重复数据)

构造:

  map(T1, T2) mp;

  map(cosnt map &mp);

赋值:

  map& operator=(const map &mp);

  key=(*it).first;value=it->second;

插入:

  insert(pair<T1, T2>(n1, n2));

删除:

  clear();

  erase(pos);

  erase(begin,end);

  erase(key);

大小操作:

  empty();

  size();

交换:

  swap(st);

查找:

  find(key);  //查找key是否存在,存在, 返回该键的迭代器;不存在,返回set.end();

统计:

  coutn(key);  //统计key的元素个数,要么为0,要么为1(map中不允许有重复元素)

排序:

  自定义排序规则——仿函数(class),map<int,int,仿函数>

 

posted @ 2022-10-30 22:23  Lovir  阅读(49)  评论(0)    收藏  举报