vector
- vector v
- reverse(v.begin(), v.end()), 反转容器的内容;
- v.push_back() v.pop_back(无参数) v.size();
- v.push_front(), 很慢其实;
- v.erase();
- v.insert(it, value);
- vec::iterator it=v.begin();it!=v.end();it++ 遍历;
- v.resize(0);
set
- set s
- s.insert()
- s.find(type)
- s.count(type)
- s.remove(type)
- 红黑树实现,按照字典序的顺序从小到大排序
unordered_set
- unordered_set s
- 用法同set, 只不过hash实现,占用空间,但是插入和查找都是o(1)的时间复杂度
map
- map<type1, type2> m;
- m[type1]=type2 m.find(type1) m.count(type1) m.remove(type1);
- m.first() m.second();
- map中不存在相同元素,按照key自动进行排序;
- m.count(key)返回的是具有key的元素个数,如果有,则返回1,没有则返回0,注意这里每个key只能有一个或者0个;
- m.find(key)返回的是此值所在的位置,没有返回m.end();
- m.insert(make_pair(key, value));
- map<type1, type2>::Key_type指的是key的类型,返回的是type1;
- map<type1,type2>::value_type返回的是pair类型,pair->second返回的是type2类型
unordered_map
- unordered_map<type1, type2> um;
- 用法和map类似,底层hash实现key,无序,后一个相同key的值会覆盖前一个key的value;
stack
- stack s;
- s.push() s.pop() s.top();
queue
- queue q;
- q.push() q.pop() q.front();
- q.back(),q.pop_front(),q.push_front();
priority_queue
- priority_queue pq;
- 优先队列,本身为“越小的整数优先级越低的优先队列”
- 从小到大排列 队首取右边,即大的一方
- pq.push() pq.pop() pq.top()
- 从大到小排列 priority_queue<int, vector,greater > pq;
- 自定义优先队列
//重载运算符
struct stu
{
string name;
int num;
int age;
bool operator<(const stu &p)const
{
return age>p.age;
}
}S[5];
int main(int argc, char *argv[])
{
S[0]={"aa",1,10};
S[1]={"bb",2,9};
S[2]={"cc",3,8};
S[3]={"dd",4,7};
S[4]={"ee",5,6};
priority_queue<stu>q;
for(int i=0;i<5;i++)q.push(S[i]);
while(!q.empty())
{
cout<<q.top().name<<" ";
q.pop();
}
return 0;
}
//自定义仿函数
struct stu
{
string name;
int num;
int age;
}S[5];
struct cmp
{
operator ()(const stu &q,const stu &p)
{
return q.num<p.num;
}
};
int main(int argc, char *argv[])
{
S[0]={"aa",1,10};
S[1]={"bb",2,9};
S[2]={"cc",3,8};
S[3]={"dd",4,7};
S[4]={"ee",5,6};
priority_queue<stu,vector<stu>,cmp >q;
//priority_queue<stu>q;
for(int i=0;i<5;i++)q.push(S[i]);
while(!q.empty())
{
cout<<q.top().name<<" ";
q.pop();
}
return 0;
}
string
- string a
- string b
- int pos=a.find(b, startPos);//为从a中的startPos位置上找是否和b有相同的串,有的话返回开始的下标pos,即子串寻找。
- a.erase(startPos, size) //即去除a中从startPos开始的长度为size的串