一:
vector (长度可自动改变的数组)
#include<vector>
vector的定义
一维定义 vector<typename> name;
二维定义 vector<typename> Arrayname[arraySize];
其中typename,可为任何基本类型,或STL标准容器。
注意:其中二维定义时,与vector<vector<typename>> name相区分。
vector<vector<typename>> name其一维长度以固定。
vector元素的访问
(一)下标访问
同普通数组,name[index];
(二)迭代器访问
迭代器:类似于指针,定义为vector<typename>::iterator it;
注:(其中的it可以自增自减)
访问例:
其中vi[i]与*(vi.begin()+i)等价
补充:
begin()为取首地址函数
end()为取尾元素地址的下一个地址,作为迭代器末尾标志,不储存任何元素。
在STL容器中,只有vector和string中,才可以使用vi.begin()+
vector的常用函数
(1)push_back()
作用:在vector后面添加一个元素。
例,push_back(x),在后面添加一个x元素。
(2)pop_bcak()
作用:删除vector的尾元素。
(3)size()
作用:获取vector中元素个数。
(4)clear()
作用:清空vector中的所有元素。
(5)insert()
作用:insert(it,x)用来向vector的任意迭代器it处插入一个元素x。
(6)erase()
1、删除单个元素
erase(it)即删除迭代器为it处的元素。
2、删除一个区间内的所有元素
erase(first,last)即删除[first,last)内的所有元素。
二:
set (一个内部自动有序且不含重复元素的容器)
#include<set>
set的定义
set<stypname> name;//类似于vector
set元素的访问:只能通过迭代器(iterator)访问
set<typename>::iterator it;
注意:由于不支持*(it+i)的访问方式,只能进行枚举。
且set内的元素自动递增排序,自动去除重复元素。
set的常用函数:
(1)insert()
作用:insert(x)可将x插入set中,并自动递增排序和去重。
(2)find()
作用:find(it)返回set中对应值为it的迭代器。
其中erase()clear()size()函数同vector
三:
string (对字符串常用需求进行封装)
#include<string>
string的定义(同基本数据类型)
string str;
初始化,例:string str="abcd";
string中内容的访问
(一)下标访问
例,str[i]进行访问。
注意,如果要读入和输出整个字符串,则只能用cin和cout。
若用printf来输出,即用c_str()将string类型转化为字符数组进行输出。
(二)迭代器访问
string迭代器的定义:
string::iterator it;
注意:string和vector一样,可以对迭代器进行加减某个数字,例str.begin()+
string常用函数
(1)operator+=
string的加法,可将两个string进行拼接。
(2)compare operator(比较规则字典序)
两个string类型可以直接使用== != < <= > >=进行比较
(3)length()/size()
返回string的长度,即存放的字符数。
(4)insert()
1、insert(pos,string)
在pos号位置插入字符串string
2、insert(it,it2,it3)
it为原字符串的欲插入位置,it2和it3为迭代器的首尾迭代器
可用,begin()end() vi.begin()+来表示it,it2,it3。
(5)erase()
与vector的不同:
删除一个区间内所有元素,可以为str.erase(pos,length)
其中pos为开始删除的起始位置,length为删除的字符个数。
其余同vector。
(6)clear()
作用:用于清空string中的数据
(7)substr()
substr(pos,len),返回从pos号位开始、长度为len的子串
(8)string::npos
string::npos是一个常数,其本身值可为-1或者4294967295
(9)find()
str.find(str2),当str2是str子串时,返回其在str中第一次出现的位置
str2不是str子串,则返回string::npos
str.find(str2,pos),从srt的pos号位开始匹配str2,返回值同上。
(10)replace()
str.replace(pos,len,str2)把str从pos号位开始、长度位len的子串替换为str2
str.replace(it1,it2,str2)把str的迭代器[it1,it2)范围的子串替换为str2