stl 常见用法总结
vector<int>q;
插入数据 q.push_back(x);
特殊插入 q.insert(q.begin()+2,9); //在第二个元素后面插入元素9;
删除最后面的数据 q.pop_back(x);
删除所有数据 q.clear();
删除第三个元素 q.erase(q.begin()+2);
删除一个区间内的元素 q.erase(q.begin()+1,q.begin()+3) //注意是左闭右开删除了第二个元素和第三个元素
找到vector第一个数据 q.front();
找到vector最后一个数据 q.back();
判断一个数是否在vector集合中 count(q.begin(),q.end(),x) //返回类型为int;只有0和1两种结果;
用vector实现去重
//unique函数可以将重复的元素全部都放队尾,并且返回最后一个不重复元素的位置
q.erase(q.unique(q.begin(),q.end()),q.end());
set<int>q
插入数据 q.insert(x);
删除元素 q.erase(x); //删除的是x这个元素,不是下标为x的数;
找到set的第一个元素*q.end();
判断一个数是否在set集合中 q.count(x) //返回类型为int;只有0和1两种结果;
找到set的最后一个元素*q.rbegin(); //注意此处不是q.end(),q.end()等于q.size(),他只会返回set中元素的个数;
对set进行遍历
for(set<int>::iterator it = s.begin(); it != s.end(); it++)
{
cout << *it << " ";
}
//如果支持c++11的话 set<int>::iterator 可以直接用auto来代替
queue<int>q; //先进先出,适用于双指针或者滑动窗口
q.empty() //如果队列为空返回true,否则返回false
q.size() //返回队列中元素的个数
q.pop() //删除队列首元素但不返回其值
q.front() //返回队首元素的值,但不删除该元素
q.push() //在队尾压入新元素
q.back() //返回队列尾元素的值,但不删除该元素
stack<int>q //先进后出
s.empty(); //如果栈为空则返回true, 否则返回false;
s.size(); //返回栈中元素的个数
s.top(); //返回栈顶元素, 但不删除该元素
s.pop(); //弹出栈顶元素, 但不返回其值
s.push(); //将元素压入栈顶