初学STL1

一:

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可以自增自减)

访问例:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcXFfNjY0ODY1MDk=,size_20,color_FFFFFF,t_70,g_se,x_16

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcXFfNjY0ODY1MDk=,size_20,color_FFFFFF,t_70,g_se,x_16 

 

其中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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值