STL容器笔记

文章介绍了C++STL中的set容器和map容器。set用于存储不重复且自动排序的元素,插入和删除操作具有logN的时间复杂度;map是关联容器,基于红黑树实现,支持快速插入、查找和删除带有关键字的值,元素同样具有唯一性。
摘要由CSDN通过智能技术生成

 

 

1set容器

用于存储无序、不重复的元素。set中的元素是根据元素值进行排序,并且每个元素在set中都是唯一的。

具体来说,set 容器主要有以下特点:

  1. 元素不重复:set 容器中存储的所有元素都是唯一的,如果插入 set 中已经存在的元素,则会被忽略。
  2. 自动排序:set 容器中的元素默认按照升序进行排序,且不允许修改排序方式。如果需要使用其他排序方式,可以使用自定义的比较函数或者采用 multiset 容器。
  3. 快速查找:在 set 容器中查找指定元素的时间复杂度为 logN(其中 N 表示 set 包含的元素个数),比线性查找更加高效。
  4. 插入和删除操作快速:向 set 容器中插入和删除元素的时间复杂度也为logN.
        set<int> s;
    
        // 向 set 中插入元素
        s.insert(4);
        s.insert(2);
        s.insert(1);
        s.insert(3);
    
        // 遍历 set 中的元素
        for (auto iter = s.begin(); iter != s.end(); iter++) {
            cout << *iter << " ";   
        }
        cout << endl;
    
    //输出结果  1 2 3 4

2map容器 

是一种关联容器,它提供了一种可以快速插入、查找和删除带有关键字的值的数据结构。map基于红黑树实现,具有自动排序以及元素唯一性保证的特点。

1插入元素的三种方式

1)使用inser()函数,返回一个pair对象

map<string,int> person;

person.insert(make_pair("小黑",18));

2)使用emplace()函数,使用元素的值调用构造函数进行插入操作

map<string,int> p;

p.emplace("xiaohei",18);

3)使用下标运算符[]进行插入或修改元素。如果key值不存在,则会创建新的键值对;如果已经存在,则会更新该键的的值。

map<int,int> m;

m[0]=10;
m[1]=100;
++m[1];  //m[1] = 101
++m[101] //key=100原先不存在,默认创建m[101]=0,然后运算++,故m[101] = 101

 上述三种方法在元素数量较少的情况下都能保证良好的性能,但当关键字数目极多时,使用insert()要比其他两种方式更高效些。

 

---------------------------------------------------------更多内容,待更新------------------------------------------------

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值