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
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号