基础知识总结--常用数据结构C++版

1、vector
#include <vector>
创建:vector<T> v;
结尾插入:v.push_back(i);
返回头指针,指向第一个元素:v.begin();
返回尾指针,指向最后一个元素的下一个元素:v.end();
返回元素个数:v.size();
返回是否为空:v.empty();
重定义大小:v.resize();
返回v长度:v.maxsize();
删除容器最后一个元素:v.pop_back();
显示存在的第一个元素:v.front();
显示存在的最后一个元素:v.back();
2、map
#include <map>
创建:map<T1,T2> m;
插入元素:m.insert(pair<T1,T2>(v1,v2));
返回头指针,指向第一个元素:m.begin();
返回尾指针,指向最后一个元素的下一个元素:m.end();
返回指定元素出现次数:m.count(key);
返回是否为空:m.empty();
查找元素m.find(key);
删除元素m.erase(iter);//iter迭代器
                  m.erase(key);//指定关键字
返回元素个数:m.size();
3、hash_map
#include<hash_map>
用法基本同map,查找速度快于map,O(1),map-O(logn),但空间要求较高,超大数据量时用hash_map
4、queue
#include <queue>
创建队列:queue<T> q;
元素入队:q.push(i);
队首元素出队:q.pop();
返回队首元素:q.front();
返回队尾元素:q.back();
返回是否为空:q.empty();
返回队中元素个数:q.size();
5、priority_queue
#include <queue>
创建优先级队列:priority_queue <T> pq;//默认大根堆
priority_queue <T,vector<T>,greater<T> > pq;//小根堆,vector<T>可以换成其他容器,默认用的vector
访问队首元素:pq.top();
返回是否为空:pq.empty();
返回队中元素个数:pq.size();
元素入队并排序:pq.push();
队首元素出队:pq.pop();
6、deque
#include <deque>
创建双端队列:deque<T> dq;
从尾部插入元素:dq.push_back();
从头部插入元素:dq.push_front();
返回第一个元素引用:dq.front();
返回最后一个元素引用:dq.back();
弹出第一个元素:dq.pop_front();
弹出最后一个元素:dq.pop_back();
返回头指针,指向第一个元素:dq.begin();
返回尾指针,指向最后一个元素的下一个元素:dq.end();
返回队中元素个数:dq.size();
清空队列:dq.clear();
删除pos位置元素:dq.erase(pos);
删除[p1,p2)区间元素:dq.erase(p1,p2);
在pos前插入元素:dq.insert(pos,val);
返回是否为空:dq.empty();
返回逆向队列第一个元素:dq.rbegin();
返回逆向队列最后一个元素:dq.rend();
7、stack
#include <stack>
创建栈:stack<T> s;
元素压入栈:s.push(i);
栈顶元素弹出:s.pop();
返回栈顶元素:s.top();
返回栈中元素个数:s.size();
返回是否为空:s.empty();
8、list
#include <list>
创建链表:list<T> l;
                  list<T> l(l1);//利用l1初始化l
                  list<T> l(l1.begin(),li.end());//同上
从尾部插入元素:l.push_back();
从头部插入元素:l.push_front();
删除最后一个元素:l.pop_back();
删除第一个元素:l.pop_front();
返回是否为空:l.empty();
删除链表中重复元素:l.unique();
给链表排序:l.sort();
返回链表中元素个数:l.size();
合并l与l1并情况l1:l.merge(l1);//l与l1需要有序
翻转链表中元素:l.reverse();
返回最后一个元素:l.back();
返回第一个元素:l.front();
返回头指针,指向第一个元素:l.begin();
返回尾指针,指向最后一个元素的下一个元素:l.end();
清空链表:l.clear();
删除等于val的元素:l.remove(val);
重定义大小:l.resize();
在iter1到iter2范围内找值为val的位置:iter=find(iter1,iter2,val);
在l的iter位置前插入l1的[iter1,iter2)段,并将l1中的对应段删除:l.splice(iter,l1,iter1,iter2);
删除指定元素:l.erase(iter);


全部评论

相关推荐

字节 飞书绩效团队 (n+2) * 15 + 1k * 12 + 1w
点赞 评论 收藏
分享
11-08 13:58
门头沟学院 Java
程序员小白条:竟然是蓝桥杯人才doge,还要花钱申领的offer,这么好的公司哪里去找
点赞 评论 收藏
分享
沉淀一会:**圣经 1.同学你面试评价不错,概率很大,请耐心等待;2.你的排名比较靠前,不要担心,耐心等待;3.问题不大,正在审批,不要着急签其他公司,等等我们!4.预计9月中下旬,安心过节;5.下周会有结果,请耐心等待下;6.可能国庆节前后,一有结果我马上通知你;7.预计10月中旬,再坚持一下;8.正在走流程,就这两天了;9.同学,结果我也不知道,你如果查到了也告诉我一声;10.同学你出线不明朗,建议签其他公司保底!11.同学你找了哪些公司,我也在找工作。
点赞 评论 收藏
分享
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务