预备知识

C++标准模板库(STL)

1. vector 变长数组

#include<vector>
vector<typename> name;
vector<vector<int> > name;// > >之间一定要加空格,否则,在C++11之前会视为移位
访问方式:
	1.下标访问	vector<typename> v; v[1]
	2.迭代器访问 vector<typename>::iterator it = v.begin(); *(it+1);
	  begin() end() 左闭右开
常用函数:
	1 push_back(),添加一个元素,时间复杂度O(1);
	2 pop_back(),删除尾元素,时间复杂度O(1);
	3 size(),获取vector中元素的个数,时间复杂度O(1);
	4 clear(),清空vector中所有元素,时间复杂度O(N);
	5 insert(),在任意it位置插入一个元素,时间复杂度O(N);
	6 erase()
				1 删除单个元素 v.erase(v.begin()+3);
				2 删除一个区间内的所有元素[first,last)
					v.erase(v.begin()+1,v.begin()+4)//删除v[1],v[2],v[3]

常见用途:
	1 本身作为数组使用
	2 用邻接表存储图

2. set 集合,一个内部自动有序不含重复元素的容器。加入set,自动排序

#include<set>
set<typename> name;
访问方式:
	1 只能通过迭代器访问	set<typename>::iterator it;
		除开vector 和 string之外的STL容器都不支持*(it+i)的访问方式
		for(set<int>::iterator it=s.begin();it!=s.end();it++){
			.......
		}
常用函数:
	1 insert(),将x插入到set中,并且,自动递增排序和去重,时间复杂度O(logN)
	2 find(),返回set中对应为value的迭代器,时间复杂度为O(logN)
	3 erase()
				1 删除单个元素:
							1 s.erase(s.find(10));
							2 s.erase(10);
				2 删除一个区间内的所有元素[first,last)
				     last是所需删除区间的末尾迭代器的下一个地址
	4 size(),获取set内的元素个数,时间复杂度O(1).
	5 clear(),清空set中的所有元素,时间复杂度O(N)。

常见用途:
	1 自动去重,并,升序排列
	2 元素唯一,如果处理不唯一的情况,使用multiset,
	  C++11中还增加了unordered_set,用散列代替set内部的红黑树实现,
	  							  使其只处理去重,不排序的需求。
	  

3. string,C语言中字符数组char str[]的升级版

#include<string>
string str;
访问方式:
	1 下标访问,str[i]
	2 迭代器访问 string::iterator it;
			    for(string::iterator it=str.begin();it!=str.end();it++){
					.......
				}
常用函数:
	1 operator+= string的加法,直接拼接,str1 += str2;
	2 compare operator,==,!=,<,<=,>,>=比较大小,规则是字典序
	3 length()/size() 长度,时间复杂度O(1)
	4 insert(),时间复杂度是O(N)
				insert(pos,string);
				insert(it,it2,it3); //[it2,it3)
	5 erase()
				1 删除单个元素
				2 删除一个区间内的所有元素
	6 clear(),时间复杂度是O(1)
	7 substr(pos,len),返回从pos号位开始,长度为len的子串,时间复杂度O(len);
	8 string::npos,本身其值为-1,由于是unsigned_int类型,
							   可认为是unsigned_int的最大值
							   用于find函数失配时的返回值
	9 str1.find(str2);
	  str1.find(str2,pos);
   10 replace() str.replace(pos,len,str2);
   				str.replace(it1,it2,str2);

4. map 映射,将任何基本类型 映射到 任何基本类型

#include<map>
using namespace std;
map<typename1,typename2> mp;
// 如果是字符串映射到整型,必须使用string而不是char数组,char数组不能作为键值的
map<string,int> mp;
map<set<int>,string> mp;

访问方式:
	1 下标访问
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值