STL容器基础熟记

目录

一.vector

二.stack

三.queue

四.priority_queue

五.set

六.map

七.string

八.pair

九.常用函数


一.vector

1.定义:

vector<int>a  vector<int>b(a)  vector<int>a(100)  vector<int>a(100,5)

vector<string>a(10,"null")  vector<string>b(a.begin(),a.end())

vector<vector<int>>name

2.访问:

下标       迭代器:vector<typename>::iterator it =vi.begin() 

vi[i]等效于*(it+i)

3:操作:

a.push_back()  a.pop_back()  a.size()  a.clear()  a.insert(it,x)   a.erase(it)  a.erase(a.begin(),a.end())  a.resize(n)  reverse(a.begin(),a.end())

二.stack

1.定义:stack<typename>a

2.访问:先进后出 a.top()

3.操作:

a.push()  a.top()  a.pop()  a.empty()  a.size()

三.queue

1.定义:queue<typename>a

2.访问:a.front()  a.back()

3.操作:

a.push()  a.front()  a.back()  a.front()  a.back()  a.pop()  a.empty()  a.size()  

四.priority_queue

1.定义:priority_queue<typename>a

优先级的设置:priority_queue<int>a 等效于 priority<int,vector<int>,less<int>>/*数字大的优先级大

priority<int,vector<int>,greater<int>>a/*数字小的优先级大

重点:结构体的优先级设置(其他stl容器如set同样可以用此方式定义优先级)

struct fruit{string name;int price;

friend bool operator<(fruit f1,fruit f2){

return f1.price<f2.price;}

}f1,f2,f3;;/*对<进行重载 价格高的优先级高(return f2.price<f1.price 则相反)

或者 struct{string name;int price;}f1,f2,f3;

strcuct cmp{

bool operator()(fruit f1,fruit f2){

return f1.price<f2.price;}}

priority_queue<fruit,vector<fruit>,cmp>q;

2.访问:a.top()/*底层是堆

3.操作:a.push()  a.top()  a.pop()  a.empty()  a.size()

五.set

1.定义:set<typename> a;/*自动去重并按升序排序

set<int>a[100];

2.访问:迭代器set<int>::iterator it;/*不支持*(it+i)方式 除了vector string

3.操作:a.insert()  a.find()  a.erase(it)  a.erase(x)  a.erase(it,a.end())  a.size() a.clear()

六.map

1.定义:map<string,int>mp  map<set<int>,string> /*以键的大小升序排序

2.访问:下标 map<char,int>mp mp['c']=3;/*键是唯一的

迭代器map<char,int>::iterator it; it->first;it->second;

3.操作:a.find(key)  a.erase(it)  a.erase(key)  mp.erase(it,a.end())  a.size()  a.clear()  

七.string

1.定义:string s="abcd"

2.访问:下标    迭代器string::iterator it

3.操作:s1+=s2  s1<=s2  s.size()  s.insert(3,s)  s.insert(s.begin+3,s1.begin(),s2.end())  s.erase(s.begin+3,s.end())  s.erase(it)  s.erase(3,2)  s.clear()  s.substr(0,5)  s.find(s1)  s.find(s1,7) string::npos  s.replace(10,4,s2)  s.replace(s.begin()+10,s.end(),s2)  to_string(num)  stoi(int)  stol(long) stof(float)  stod(double)  strcpy(a,s.c_str())

八.pair

1.定义:pair<typename,typename>  pai<string,int>p("haha",5)

2.访问:迭代器  it->first it->secend

3.操作:代替二元结构体

map<string,int>mp;

mp.insert(pair<string,int>("haha",5));

九.常用函数

next_permutation/*全排列中下一个排列,故要先有序 

fill(a,a+5,233)  sort(a+1,a+1+n,cmp)  sort(s,s+10)

lower_bound(a,a+10,-1)/*寻找范围内第一个值大于等于val的元素位置

upper_bound(a,a+10,-1)/*寻找范围内第一个值大于val的元素位置

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值