set/multiset

文章详细介绍了C++中`multiset`容器的操作,包括基本的迭代器使用、插入和删除元素的方法,以及如何实现自定义排序。展示了如何使用`insert`、`erase`、`size`、`empty`等函数,以及`lower_bound`、`upper_bound`和`equal_range`等高级功能。
摘要由CSDN通过智能技术生成
操作说明
c.begin()返回一个随机存取迭代器,指向第一个元素
c.end()返回一个随机存取迭代器,指向最后一个元素的下一个位置
c.rbegin()返回一个逆向迭代器,指向逆向迭代的第一个元素
c.rend()返回一个逆向迭代器,指向逆向迭代的最后一个元素的下一个位置
c.insert(elem)插入一个elem副本, 返回新元素位置, 无论插入成功与否
c.insert(pos, elem)安插一个elem元素副本, 返回新元素位置, pos为收索起点, 提升插入速度
c.insert(beg,end)将区间[beg, end)所有的元素安插到c, 无返回值
c.erase(elem)删除与elem相等的所有元素, 返回被移除的元素个数
c.erase(pos)移除迭代器pos所指位置元素, 无返回值
c.erase(beg,end)移除区间[beg, end)所有元素, 无返回值
c.clear()移除所有元素, 将容器清空
c.size()返回当前的元素数量
c.empty ()判断大小是否为零,等同于0 == size(),效率更高
count (elem)返回元素值为elem的个数
find(elem)返回元素值为elem的第一个元素,如果没有返回end()
lower _bound(elem)返回 元素值 >= elem 的第一个元素位置
upper _bound (elem)返回 元素值 > elem 的第一个元素位置
equal_range (elem)返回elem可安插的第一个位置和最后一个位置,也就是 元素值 == elem 的区间
#include <iostream>
#include <set>
using namespace std;
int main()
{
    multiset<int> grades;
    grades.insert(90);
    grades.insert(80);
    grades.insert(85);
    grades.insert(95);
    grades.insert(90);

    cout << "学生个数 " << grades.size() << endl;

    cout << "成绩增序排序: ";
    for (auto i : grades)
        cout << i << " ";
    cout << endl;

    cout << "成绩降序排序 ";
    for (auto it = grades.rbegin(); it != grades.rend(); it++)
        cout << *it << " ";
    cout << endl;

    return 0;
}

运行结果

学生个数 5
成绩增序排序: 80 85 90 90 95 
成绩降序排序 95 90 90 85 80 

自定义排序顺序

struct cmp
{
    bool operator()(const rec&a, const rec&b)
    {
        return a.x < b.x || a.x == b.x && a.y < b.y;
    }
};

自定义类型并排序

struct rec
{
    int x, y;
};
struct cmp
{
    bool operator()(const rec&a, const rec&b)
    {
        return a.x < b.x || a.x == b.x && a.y < b.y;
    }
};
multiset<rec, cmp>h;
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值