STL-set

9 篇文章 0 订阅

目录

1.包含头文件

2.set的创建与初始化

 3.set访问元素

4.插入与删除 


1.包含<set>头文件

#include<set>

2.set的创建与初始化

  • set<T> s:创建一个空的集合
  • set<T> s {n1, n2, ..., ni}:创建一个初始元素为n1,n2,...,ni的集合
  • set<T> s {begin, end}:用迭代器创建集合

set<T[, cmp]>可以传入比较参数,对应于以上所有创建方式

#include<iostream>
#include<set>
#include<string>

using namespace std;

int main()
{
    set<int> s1;
    cout << s1.size() << endl;  // 0

    set<string> s2 {"aaa", "bbb", "ccc"};
    cout << s2.size() << endl;  // 3

    set<string> s3 {++s2.begin(), s2.end()};
    cout << s3.size() << endl;  // 2

    return 0;
}

 3.set访问元素

  • find():返回指定元素的迭代器,未找到返回结束迭代器

set中没有 at() 和 [ ] 下标访问 ,但可以使用 foreach 遍历

#include<iostream>
#include<set>
#include<string>

using namespace std;

int main()
{
    set<string> s {"aaa", "bbb", "ccc"};

    if (end(s) == s.find("bbb"))
        cout << "bbb " << "not found!" << endl;
    else
        cout << "bbb " << "found!" << endl;

    if (end(s) == s.find("ddd"))
        cout << "ddd " << "not found!" << endl;
    else
        cout << "ddd " << "found!" << endl;

    return 0;
}
/*
输出:

bbb found!
ddd not found!
*/

4.插入与删除 

  • insert():插入一个或多个元素
  • emplace():在集合中生成一个或多个元素
  • erase():删除一个或多个元素
  • clear():清空集合
#include<iostream>
#include<set>
#include<string>

using namespace std;

int main()
{
    set<int> s {1, 2};  // size: 2

    // insert 插入单个元素
    s.insert(3);  // size: 3

    // insert 插入多个元素
    s.insert({4, 5}); // size: 5

    // 使用迭代器插入
    int t[] = {6, 7};
    s.insert(begin(t), end(t)); // size: 7

    // emplace 插入
    s.emplace(8);  // size: 8

    // erase 删除指定元素
    s.erase(2);  // s: 1345678    size: 7

    // erase 迭代器删除
    s.erase(--end(s));  // s:134567    size: 6

    // erase 迭代器删除多个
    s.erase(++begin(s), --end(s));  // s: 17    size: 2

    s.clear();  // size: 0

    return 0;
}

 这里只介绍了 set 的基础用法。

参考网址:C++ set容器(STL set容器)


 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值