STL之set容器

本文详细介绍了C++标准库中的关联容器std::set,包括其基本概念、操作方法如插入、删除、查找等,并通过示例代码展示了其在实际编程中的应用。std::set通常使用红黑树实现,提供了高效的操作复杂度。
摘要由CSDN通过智能技术生成

        std::set是关联容器,含有 Key类型对象的已排序集。用比较函数 Compare进行排序。搜索、移除和插入拥有对数复杂度。 set 通常以红黑树实现。
       在每个标准库使用比骄(Compare) 概念的场所,用等价关系确定唯一性。不精确地说,若二个对象a与b相互间既不比较大于亦不比较小于:!comp(a,b)&&!comp(b,a),则认为它们等价。
std::set满足容器(Container)、具分配器容器(AllocatorAwareContainer)、关联容器(AssociativeContainer) 和可逆容器(ReversibleContainer)的要求。

迭代器
begin,cbegin:返回指向容器第一个元素的迭代器
end,cend:返回指向容器尾端的迭代器
rbegin,crbegin:返回指向容器最后元素的逆向迭代器
rend,crend:返回指向前端的逆向迭代器
容量
empty:检查容器是否为空
size:返回容纳的元素数
max_size:返回可容纳的最大元素数
修改器
clear:清除内容
insert:插入元素或结点 
emplace:原位构造元素
emplace_hint:使用hint就地构造元素
erase:擦除元素
swap:交换内容
extract:从另一容器释出结点
merge:从另一容器接合结点
查找
count:返回匹配特定键的元素数量
find:寻找带有特定键的元素
contains:检查容器是否含有带特定关键的元素
equal_range:返回匹配特定键的元素范围
lower_bound:返回指向首个不小于给定键的元素的迭代器
upper_bound:返回指向首个大于给定键的元素的迭代器
观察器
key_comp:返回用于比较键的函数
value_comp:返回用于在value_type类型的对象中比较键的函数。
//
// Created by LiuHongzhe on 2021/11/11.
//

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
int main() {
    set<ll>a;
    cout<<a.empty()<<endl;//检查容器是否为空
    cout<<a.size()<<endl;//返回容纳的元素数
    cout<<a.max_size()<<endl;//返回可容纳的最大元素数
    a.insert(123);//插入元素或结点
    a.insert(456);
    a.insert(789);
    for(auto it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";//返回指向容器第一个元素的迭代器,返回指向容器尾端的迭代器
    }
    cout<<endl;
    a.erase(a.begin());//擦除元素
    for(auto it=a.begin();it!=a.end();it++)
    {
        cout<<*it<<" ";
    }
    cout<<endl;
    a.insert(456);
    cout<<a.count(456)<<endl;//返回匹配特定键的元素数量
    cout<<a.count(123)<<endl;
    cout<<"======================="<<endl;
    auto it=a.find(123);//寻找带有特定键的元素
    if(it!=a.end())
    {
        cout<<"find:"<<*it<<endl;
    }
    else
    {
        cout<<"no find"<<endl;
    }
    
    it=a.find(456);
    if(it!=a.end())
    {
        cout<<"find:"<<*it<<endl;
    }
    else
    {
        cout<<"no find"<<endl;
    }
    a.clear();//清除内容
    cout<<a.size()<<endl;
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值