acm竞赛中常用的STL容器及其功能

STL容器的基本用法

迭代器:用于遍历容器中数据的对象。按预先定义的顺序移动,所以不宜用it<s.end(); (封装过的指针)


queue

FIFO
q.empty() 空返回1 不空返回0
q.size() 队列大小
q.push(元素名)
q.pop()
q.front()
q.back()
清空:循环出队列


stack

FILO
s.push(x)
s.pop() //要先确保栈非空
s.top()
//只能在栈顶访问,因此遍历整个栈可以循环s.pop()
s.empty()
s.size()
清空:循环出栈


vector

动态数组,可以用下标访问
vector<int>v; 初始化size为0的向量
v.push_back(x) 向尾部加入元素
v.pop_back() 删除尾部元素
v.size() 元素个数
v.empty()
v.begin() 指向首元素的迭代器
v.end() 指向尾元素的下一个
sort(v.begin(),v.end());
reverse(v.begin(),v.end()) 翻转向量


set

set<int>st;
存储:自动去重,从小到大
set<int,greater<int> >st; (元素从大到小)
访问:for(set<int>::iterator it=st.begin();it!=st.end();it++) //左闭右开
(只能通过迭代器访问,因为begin到end并不一定是线性顺序)
插入:st.insert(x);
删除:st.erase(x);


string //(是否包含空格?)

直接用,下标从零开始
连接字符串:+,+=
s.length()或者s.size()
取子串:s2=s1.substr(2) 从2位置开始取 或 s2=s1.substr(2,4)区间内的字符
插入/删除: erase 同上
s.find(key)
对s中字母排序:sort(s.begin(),s.end());
next_permutation(s.begin(),s.end()); 求下一个全排列
prev_permutation(s.begin(),s.end()); 求上一个全排列


map<key,value>

键值对容器,可以使用键作为下标来获取一个值
m.count(k) 返回m中键值=k的元素的个数
m.erase(k) 返回删除的键值为k的元素的个数
m.find(k) 返回指向该元素的迭代器
m.clear()


it->first key
it->second value

 

posted @ 2021-03-28 12:52  starlightlmy  阅读(158)  评论(0)    收藏  举报