STL——1.容器

1.序列式(容器内的元素没有什么关系)
(1)vector(动态数组)
①创建 
//不带参数(1种)
vector<int> v1;
//带参数(4种)
vector<int> v1 = {0,1,2,3};
vector<int> v2(3,10);  //含3个10
vector<int> v3(指针1,指针2);  
vector<int> v4(v1); //创建和v1一样的vector
②赋值(assign)
//assign(指针1,指针2);
v1.assign(v2.begin(),v2.end());  //左闭右开

//assign(n,elem);
v2.assign(3,10);   //3个10

//assign(arr,arr+n);
int arr[] = {0, 1, 2, 3, 4};
v3.assign(arr,arr+5);

//swap(v1,v2);
swap(v1,v2);  //更换v1、v2
③容量(size) 
int len = v1.size();
④判空(empty)
v.empty();  //空返回true,否者返回false
⑥尾插(push_back)
v.push_back();
⑦尾删(pop_back)
v.pop_back();
⑧长赋值,短截断(resize)
v1.resize(10);  //多出的部分自动补零
v1.resize(15,1);  //增加的部分赋值为1
⑨排序(sort) 
sort(v1.begin(),v1.end());
sort(v1.begin(),v1.end(),greater<int>());  //逆序
 ⑩头尾
v.front();
v.back();
⑩①清空
v.clear();

暂且说这几个常用的。 

(2)deque,双端队列

和vector几乎差不多,就多了个前插和前删。

①前插
v.push_front();
②前删 
v.pop_front();
(3)list,链表

不常用。

(4)stack,栈
①创建
stack<int>sk;
②插入
sk.push(10);  //栈顶插入元素10
③删除
sk.pop();  //弹出栈顶元素10
④栈顶
sk.top();
⑤大小
sk.size();
⑥判空
sk.empty();  //空返回true,非空返回false
(5)queue,队列
①创建
queue<int>q;
②头尾
q.front();
q.back();
③插入
q.push(10);
q.push(9);
④删除
q.pop(); //删除10
⑤大小
q.pop();
⑥判空
q.empty();
2.关联式(容器内的元素有关系,如大小关系、重复性等)
(1)set,集合
①创建
set<int> st;
②插入
st.insert(2);  //插入值为2的元素
③删除
st.erase(2);
④容量
st.size();
⑤查找
st.find(2); //若找到则返回该处的迭代器,否则返回st.end()迭代器
st.lower_bound(x); //二分查找小于等于x的元素最小的一个,并返回指向该元素的迭代器
st.upper_bound(x); //二分查找大于x的元素最小的一个,并返回指向该元素的迭代器
⑥元素个数
int num;
num = st.count(2);
⑦判空
st.empty();
⑧清空
st.clear();
(2)priority_queue,大根堆,小根堆
①创建
priority_queue<int> q1;  //创建大根堆
priority_queue<int, vector<int>, greater<int>> q2; //创建小根堆
②插入
q1.push(2); //把2插入堆(自动排序)
③删除
q1.pop(); //删除堆顶元素
④堆顶
q1.top();
⑤容量
q1.size();
⑥判空
q1.empty();
(3)map

元素按照键的大小排列。

①创建
map<int,int>mp;
②键值
iter->first;
iter->second;
③插入
map[2] = 5;
mp.insert(pair<int,int>(2,5));
④删除
ap.erase(iter);  //删除迭代器所指的键值对
⑤查找
mp.fine(2);  //查找键为2的元素,返回指向该处的迭代器
⑥判空
mp.empty();
⑦清空
mp.clear();
(4)unordered_map,哈希表

和map一样,但是元素没有排序。

目前经常用到的就这些,后面要是用到别的再补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值