前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >算法与数据结构之集合

算法与数据结构之集合

作者头像
灯珑LoGin
发布2022-10-31 10:17:34
1810
发布2022-10-31 10:17:34
举报
文章被收录于专栏:龙进的专栏

C++为我们提供了集合这个内置的数据结构,它是基于二叉搜索树来实现的,并且对树进行了平衡处理,使得元素在树中分布较为均匀。因此,能保证它搜索、插入、删除操作的时间复杂度为O(logn)

set是stl的内置数据结构,它包含以下的成员函数:

函数名

功能

复杂度

size()

返回set中的元素数

O(1)

clear()

清空set

O(1)

begin()

返回指向set开头的迭代器

O(1)

end()

返回指向set末尾的迭代器

O(1)

insert(key)

向set中插入元素key

O(logn)

find(key)

搜索与key一致的元素,并返回指向该元素的迭代器。若没有与key一致的元素,则返回指向set末尾的迭代器

O(logn)

erase(key)

删除值为key的元素

O(logn)

需要注意的是,指向set末尾的迭代器,指向的是最后一个元素的下一位的内存地址。(如果不是这样的话,那在搜索的时候,如果key与集合最后一个元素相同的话,就会得出无法找到元素的结论了)

下面一个例子给出了set的集中用法:

代码语言:javascript
复制
#include<iostream>
#include<set>
using namespace std;

void print(set<int>s)
{
    cout<<s.size()<<":";
    for(set<int>::iterator it = s.begin(); it!=s.end();it++)
    {
        cout<<" "<<(*it);
    }
    cout<<endl;
}

int main()
{
    set<int>s;
    s.insert(8);
    s.insert(1);
    s.insert(7);
    s.insert(4);
    s.insert(8);
    s.insert(4);
    print(s);

    s.erase(7);

    print(s);

    s.insert(2);

    print(s);

    if(s.find(4)==s.end()) cout<<"not found"<<endl;
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020年11月18日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档