C++常用容器和算法函数总结

本文详细介绍了C++标准库中vector, queue, priority_queue和stack的数据结构及其关键操作,包括push_back, pop_back, size, clear等,以及queue和priority_queue的优先级特性。同时涵盖了它们在实际开发中的应用场景和常见用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

一.vector

1.a.push_back(x) //最后加一个元素

2.a.pop_back() // 删除最后一个元素

3.a.size() //长度

4.a.clear() //清空

5.a.insert(it,x) //往迭代器it处插入x

6.a.begin() //首部迭代器

7.a.end() //尾部迭代器

8.a.erase(it) //删除it迭代器处元素(不常用)

9.a.erase(first,last) //删除[first,last)内的元素,注意左闭右开(不常用)

10.a.front() //返回首元素

11.a.back() //返回最后一个元素

二.queue

1.a.push(x) //入队尾

2.a.pop() //出队头

3.a.front() // 返回队头元素

4.a.back() //返回队尾元素

5.a.size() // 返回个数

6.a.empty() //判空

三.priority_queue

函数与queue相同,好处就是可以自己定义其中数据的优先级,让优先级高的排在队列前面,优先出队

priority_queue<int,vector<int>,greater<int>> a // 小顶堆

priority_queue<int> a //大顶堆

结构体重载运算符

struct Rec

 {

        int a,b;

        bool  operator < (const Rec &t) const         

        {

                return a<t.a;

        }

}//大根堆要重载小于号

同理小根堆要重载大于号

1.a.top() //访问队头元素

2.a.push(x) //插入队列并排序

3.a.size() //返回队列内元素个数

4.a.pop() //弹出队头元素

5.a.empty() //判空

四.stack
 1.skt.push(1); //向栈顶插入
 2. stk.top();   //返回栈顶元素
 3.stk.pop();   //删除栈顶元素

五.deque
    
    a.begin();// 返回头部迭代器  
    a.front();//返回第一个元素
    a.end();  // 返回最后迭代器 
    a.back(); //返回最后元素
    
    a.push_back(1);//最后入队 
    a.push_front(2);//第一个入队
    
    a.pop_back()   //弹出最后元素
    a.pop_front()  //弹出第一个元素
    a.clear();

六.set

1.a.begin() //返回第一个元素迭代器

2.a.clear() //清除所有元素

3.a.count(x) //返回个数0或1

4.a.empy()  //判空

5.a.end()  //返回最后一个元素的迭代器

6.a.size()  //返回元素个数

7.++s.begin()    --a.end();   //求前驱后继

8.a.insert(x)   //插入x

9.a.find(x)  //查找x返回x的迭代器不存在返回end

10.a.erase(x)  //删除x

11.a.lower_bound(x) //找到大于等于x的元素中最小的一个

12.a.upper_bound(x)  //找到大于x的元素中最小的一个

13.multiset//允许多个重复元素的平衡树操作同set

7.pair

1.pair<T1,T2>  p1({...,...});

2,p1 = make_pair()

3,p1.first     p1.second

8.map

    map<string,vector<int>> a;
    a.insert({"a",{}});
    a["zhz"] = vector<int>({1,2,3,4});
    cout<<a["zhz"].size()<<endl;
    

[]操作符
        h[key] 返回key映射的value的引用,时间复杂度为O(logn)。
[]操作符是map最吸引人的地方。我们可以很方便地通过h[key]来得到key对应的value,还可以对h[key]进行赋值操作,改变key对应的value。
 

size/empty/clear/begin/end均与set类似。

    Insert/erase
  与set类似,但其参数均是pair<key_type, value_type>。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值