STL库综合

struct node{
	int a,b;
	node(int A=0,int B=0){//构造函数 
		a=A;
		b=B;
	}
}; 
STL库:
//不要越界! 
vector<int> a;//定义了长度为0的int类型数组 
vector<int> b(10);//定义了长度为10的int类型数组 
vector<int> c(20,3);//定义了长度为20的int类型数组,所有位置初始化为3; 
//以上所有调用vector的构造函数,都是一维数组 
a.push_back(x);//在a的结尾新开一个位置,把x放进去
cout<<a.size();//输出a的数组长度
原理:
一个指针,指向一片区域
vector一般预留两倍的空间,不够用了搬家,在新的位置再开两倍 
vector<int>a[10];
a[4][7]:访问了下标为4的vector变量(其实是数组)中下标为7的位置 
vector的size函数是unsigned类型的,没负数
所以当计算到-1会转成40多亿
进行max时也不行(max要求两个变量同类型) 
补救:转int类型
for(int i=0;i<=int(a.size())-1;i++){
	cout<<a[i]<<"\n";
} 
maxx=max(b,int(a.size()));
只要有size函数就是unsigned类型的,没负数
(包括但不限于stack,queue,string,pair); 
a.clear()//数组长度也清空
不支持clear():stack,queue,ptiority_queue
pair
pair<first类型,second类型>变量名
pair<int,int>a=make_pair(1,2);
map
map数组下标没有限制,可以很大,可以负数
一颗pair类型的红黑树(优化的二叉搜索树) 
map<数组下标类型,数组元素类型>数组名
map<string,int>a;
a["abc"]=12;
string s;
a[s]=12;
count()查找相同下标在数组中的个数,0或1
map<int,int>a;
a[7]=1//没有a[7]这个空间,map给我们创建一个 
迭代器(iterator):STL版的指针,遍历容器要用它
容器的定义::iterator 变量名;
vertor<int>a;
for(vector<int>::iterator it=a.being();it!=a.end();it++){
	cout<<*it<<" ";
} 
便利map
map<int,int>a;
for(map<int,int>::it=a) {
	cout<<it.first<<" "<<it.second;
}
set
自动去重+排序
set<int> s;
s.insert(x);
s.erase(x);
s.size();
遍历(简写): 
for(int x:s){
	cout<<x<<" ";
}
迭代器:set<int>::iterator 
unordered_map和unordered_set
不进行排序,时间复杂度从log变O(1)
但不稳定
multiset:只排序,不去重
区别
1.count()的数变大 
2.删除一个x: 
s.erase(s.lower_bound(x)); 
全删除:
s.erase(x); 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值