【STL】C++ STL常用方法

#include<iostream>
#include<vector>
#include<stack>
#include<queue>
#include <set>
#include<map>
#include<cstring>
#include<algorithm>

using namespace std;

void use_vector()
{
    // 1. 创建一个vector实例,用于存储int
    vector<int> a;

    // 2. 得到a中元素个数
    int sz = a.size();

    // 3. 插入一个元素
    a.push_back(1);
    a.push_back(2);

    // 4. 访问刚才插入的元素 a[i] | a.begin() + i
    cout << (a[0] == *(a.begin() + 0)) << endl;

    // 5. 删除指定下标的元素
    a.erase(a.begin() + 0);

    // 6. 删除指定范围的元素(左闭右开)
    a.erase(a.begin() + 0, a.end());

    // 7. 清空所有内容
    a.clear();

    // 8. 直接将容量修改为5
    a.resize(5);

    // 9. 是否为空
    bool empty = a.empty();
}

void use_stack()
{
    // 1. 创建一个栈
    stack<int> s;

    // 2. 入栈
    s.push(1);
    s.push(2);

    // 3. 出栈
    s.pop();

    // 4. 获取栈顶元素
    int top = s.top();

    // 5. 是否为空
    bool empty = s.empty();

    // 6. 栈中元素个数
    int sz = s.size();
}

void use_queue()
{
    // 1. 创建队列
    queue<int> q;

    // 2. 入队
    q.push(1);
    q.push(3);

    // 3. 出队
    q.pop();

    // 4. 队头
    int front = q.front();

    // 5. 是否为空
    bool empty = q.empty();

    // 6. 队列中元素个数
    int sz = q.size();
}

void  use_priority_queue()
{
    // 1. 创建优先级队列(堆)
    priority_queue<int> pq;

    // 2. 入堆
    pq.push(1);
    pq.push(2);
    pq.push(3);

    // 3. 出堆
    pq.pop();

    // 4. 堆顶元素
    int top = pq.top();

    // 5. 判空
    bool empty = pq.empty();

    // 6. 堆中元素个数
    int sz = pq.size();
}

void use_set()
{
    // 1. 创建一个set(有序)
    set<int> s;

    // 2. 插入元素
    s.insert(1);
    s.insert(2);

    // 3. 判断是否存在元素1
    bool ans = s.count(1);

    // 4. 删除元素
    s.erase(1);

    // 5. 集合内个数
    int sz = s.size();

    // 6. 是否为空
    bool empty = s.empty();
}

void use_multiset()
{
    // 1. 创建multiset(允许集合中元素重复)
    multiset<int> ms;

    // 2. 插入元素
    ms.insert(1);
    ms.insert(1);
    ms.insert(2);

    // 3. 获取元素个数
    int cnt = ms.count(1);

    // 4. 删除元素(会将元素1全部删除)
    ms.erase(1);

    // 5. 集合内个数
    int sz = ms.size();

    // 6. 是否为空
    bool empty = ms.empty();
}

void use_map()
{
    // 1. 创建map
    map<string, int> m;

    // 2. 插入
    m["apple"] = 1;
    m["banana"] = 2;

    // 3. 查询
    m["apple"];
    bool find = m.find("apple") != m.end();

    // 4. 个数
    int sz = m.size();
}

void use_string()
{
    // 1. 创建字符串
    string s = "hello world";

    // 2. 字符串复制
    string copy = s;

    // 3. 访问
    char a = s[0];

    // 4. 将string转为字符数组
    char c[100];
    strcpy(c, s.c_str());
}

void use_pair()
{
    // 1. 创建pair
    pair<int, int> p;

    // 2. 赋值
    p = {1, 1};

    // 3. 获取
    p.first; p.second;
}

void use_sort()
{
    int a[5] = {5, 4, 3, 2, 1};
    sort(a, a + 5);
}

int main()
{
    use_vector();
    use_stack();
    use_queue();
    use_priority_queue();
    use_set();
    use_multiset();
    use_map();
    use_pair();
    use_string();
    use_sort();
    return 0;
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值