c++ STL 数据结构

STL 应用

目录

目录

STL 应用

    容器通用函数:

.size() :               容器内元素个数

.empty() :               判断容器是否为空, 返回值为 bool 型

.front():                返回容器第一个元素

.back() :               返回容器最后一个元素

.begin() :               返回容器第一个元素的指针

.end() :               返回容器最后一个元素的指针

.swap(b) :                交换两个容器的内容

:: iterator :              迭代器

1. vector (动态数组)

        1.创建

        2.添加

        3.删除

 2. 栈

        栈只用记住四个字:先进后出!!!先进后出!!!先进后出!!!

      操作

3. 队列(queue)

队列只用记住四个字:先进先出!!!先进先出!!!先进先出!!!

      操作

4.set

      操作

建议题目 :


    容器通用函数:

.size() :               容器内元素个数

.empty() :               判断容器是否为空, 返回值为 bool 型

.front():                返回容器第一个元素

.back() :               返回容器最后一个元素

.begin() :               返回容器第一个元素的指针

.end() :               返回容器最后一个元素的指针

.swap(b) :                交换两个容器的内容

:: iterator :              迭代器

进入正题

1. vector (动态数组)

        动态数组 顾名思义就是封装了动态大小数组的顺序容器。其中所有元素按照线性顺序排序。可直接访问第几位

        注意:动态数组的下标从 0 开始。

        1.创建

vector <T> a;
vector <T> a(100);
vector <T> a[15]; // 二维数组

        2.添加

a.push_back(x);
a.insert(a.begin() + 1, x); // 在 a.begin() 指向元素 前 插入一个 x

        3.删除

a.pop_back();

 2. 栈

        很多人都觉得 栈 非常的难, 但是只要你理解了 它 的思维,写起来一点也不难。

        栈只用记住四个字:先进后出!!!先进后出!!!先进后出!!!

      操作

        1. stack<T> s;

        2. .push(x);

        3. .pop();

        4. .top();

        5. .empty()

        6. .size()

        (具体都是啥我不用讲了吧)上图!

推荐习题 : 表达式括号匹配 - 洛谷

后缀表达式 - 洛谷

3. 队列(queue)

队列只允许从队尾入队,从队首出队。 就像 排队接水。

队列只用记住四个字:先进先出!!!先进先出!!!先进先出!!!

      操作

        1. queue<int> q;

        2. .push(x);

        3. .pop();

        4. .top();

        5. .empty()

        6. .size()

       (具体都是啥我又不用讲了吧 )

        


4.set
 

关于set,必须说明的是set关联式容器。set作为一个容器也是用来存储同一数据类型的数据类型,并且能从一个数据集合中取出数据,在set中每个元素的值都唯一,而且系统能根据元素的值自动进行排序。应该注意的是set中数元素的值不能直接被改变。C++ STL中标准关联容器set, multiset, map, multimap内部采用的就是一种非常高效的平衡检索二叉树:红黑树,也成为RB树(Red-Black Tree)。RB树的统计性能要好于一般平衡二叉树,所以被STL选择作为了关联容器的内部结构。

注意:

1、set中的元素都是排好序的

2、set集合中没有重复的元素

      操作

        1. set<int> s;

        2. .insert(x);

        3. .erase();

        4. .find();

        5. .empty()

        6. .count()

        7. .clear()

        8. lower_bound / upper_bound

建议题目 :

亲戚 - 洛谷

保龄球 - 洛谷

A-B 数对 - 洛谷

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值