C++ 中multiset 的使用

multiset 的说明

C++ 中 multiset 它的主要特点就是元素会自动排序切允许有重复的元素(set中不允许元素重复)

multiset 同样也是STL中的模板使用的时候 需要先引入 #include <set>

#include <iostream>
#include <string>
using namespace std;
#include <set>

int main()
{
    // 创建一个空的set
    multiset<int> a;
    a.insert(1);
    a.insert(5);
    a.insert(2);
    a.insert(3);
    a.insert(4);
    a.insert(2); // 允许重复这个可以插入
    cout << a.size() << endl; // 允许重复,打印结果为 6
    //使用迭代器遍历元素
    set<int>::iterator it;
    for (it = a.begin(); it != a.end(); it++)
    {
        cout << *it << endl;  // 自动排序,打印结果为122345
    }
}

multiset 方法说明

函数说明
beginmultiset中第一个元素的引用
endmultiset中最后一个元素的引用
size返回multiset的个数
empty判断集合是否为空,为空返回true
find(x)返回一个指向x的迭代器,如果x不存在,则返回的迭代器等于end
upper_bound(x)返回一个指向x的迭代器

lower_bound(x)

返回一个迭代器指向位于x之前切紧邻x
clear清空集合元素
rbegin返回一个反向迭代器,指向向量末尾元素之后
rend返回一个反向迭代器,指向向量起始元素
erase(i)删除第i位置的元素(注意不能直接为数组,需要用begin或者end)
erase(start,end)

删除指定的元素返回,注意是前包含后不包含,里面不能是数字

insert(i,x)把 i 插入到x位置
insert(i,x,y)把 i 插入到x到y 的位置
swap交换2个集合的内容

demo 练习 

#include <iostream>
#include <string>
using namespace std;
#include <set>

int main()
{
      // 声明一个set
      multiset<char> iset;
      // 获取默认set的size
      cout << iset.size() << endl;
      // 插入元素
      iset.insert('A');
      iset.insert('B');
      iset.insert('C');
      iset.insert('D');
      // 获取set的size
      cout << iset.size() << endl;
      //使用迭代器遍历元素
      set<char>::iterator it;
      for (it = iset.begin(); it != iset.end(); it++)
      {
            cout << *it << endl;
      }
      // find查找
      it = iset.find('D');
      if (it == iset.end())
      {
            cout << "未找到" << endl;
      }
      else
      {
            cout << "找到了" << endl;
      }

      // set判空
      if (iset.empty())
      {
            cout << "set为空" << endl;
      }
      else
      {
            cout << "set不为空" << endl;
      }
      // 清空set
      iset.clear();
      return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值