C++标准模板库(一)

之前学习自定义模板时觉得自定义模板比较抽象,使用起来较为繁琐。作为C++标准库相当重要的一部分,STL库提供一系列组件操作。为我们解决了这个问题。

标准模板库STL包括容器、迭代器、算法

容器指包含数据的数据结构,容器中包含的对象是元素;

迭代器指用来访问容器中的元素对象,相当于元素对象的指针;

算法指一些能在各种容器中通用的标准算法,如排序、插入等;

算法使用迭代器在容器上进行操作。

STL常见容器:

序列式容器:

序列式容器在STL中主要包含常见的三种:向量vector、链表list和双端队列deque

向量vector为一种顺序存储同类型元素的数据结构。它是一种数组方式的思路实现,并且可以随机访问的序列。

链表list是一种实现双向链表数据结构的容器。它只支持顺序访问序列中的元素。该容器在删除、插入相应元素时,效率较高。另外,list可以与vector一样在需要时动态改变其大小。

双端队列deque是类似向量的一种队列结构。它允许在该队列的头部和尾部插入并且删除相应的元素。同时,它也支持针对其元素的顺序以及随机访问。


 向量vector接口方法说明

接口方法名称

基本功能说明

vectorObject.assign(start,end)

将迭代器startend之间的数据元素赋值给vectorObject

vectorObject.assign(n, elem)

nelem元素赋给其调用的vectorObject

vectorObject.at(index)

返回向量vectorObject中指定索引index所指的数据元素

vectorObject.back()

返回向量vectorObject中最后一个数据元素

vectorObject.begin()

返回指向向量vectorObject中第一个元素的迭代器

vectorObject.capacity()

返回向量vectorObject中元素的个数

vectorObject.clear()

清空向量vectorObject中的数据元素

vectorObject.empty()

判断向量vectorObject是否为空,为空则返回true

vectorObject.end()

返回指向向量vectorObject最后一个数据元素的迭代器

vectorObject.erase(loc)

删除当前向量loc位置数据元素,返回下一个数据元素位置

vectorObject.erase(start,end)

删除从startend区间的元素,包含start不包含end,并返回下一个数据元素位置

vectorObject.front()

返回向量中第一个数据元素

vectorObject.insert(pos,elem)

当前向量中pos位置插入元素elem,并返回新数据的位置

vectorObject.insert(pos,n,elem)

当前向量中pos位置插入nelem数据元素,不返回任何值

vectorObject.insert(pos,start,end)

当前向量中pos位置处插入区间在startend之间的数据元素,包含start但不包含end,无任何返回值

vectorObject.max_size()

返回当前向量中最大数据量,即向量的最大长度

vectorObject.pop_back()

删除当前向量最后一个数据元素

vectorObject.push_back(elem)

当前向量尾部添加一个数据元素

vectorObject.rbegin()

返回一个逆向队列的第一个数据元素

vectorObject.rend()

返回一个逆向队列的最后一个数据元素

VectorObject.reserve()

设置当前向量合适的最小容量

vectorObject.resize(num)

重新设定当前向量的长度

vectorObject.size()

返回当前容器中实际数据元素个数

v1.swap(v2)

呼唤向量v1v2的数据元素

operator[]

重载下标操作符,用于访问指定向量中的元素

双端队列deuqe公开方法接口说明

接口方法名称

基本功能说明

d.assign(n,elem)

nelem元素取代当前队列容器中元素

d.assign(first,end)

迭代器firstend区间的元素取代当前队列中元素

d.at(n)

访问当前队列n位置处的元素,并返回该元素

d.back()

返回当前队列尾部元素

d.begin()

返回当前队列第一个元素的迭代器

d.clear()

清空当前队列中所有元素

d.empty()

判断当前队列是否为空,如果为空则返回true

d.end()

返回当前队列中最后一个元素的迭代器

d.erase(first,end)

删除当前队列迭代器firstend所指区间的元数据

d.erase(iter)

删除当前队列迭代器iter所指位置元素

d.front()

返回当前队列起始位置元素

d.insert(iter,elem)

当前队列迭代器iter位置处插入元素elem

d.insert(iter,first,end)

将迭代器firstend区间的元素插入到当前队列iter所指位置

d.insert(iter,num,elem)

numelem元素插入到当前队列iter所指位置处

d.max_size()

返回当前队列容器当前最大容量

d.pop_back()

删除当前队列中最后一个元素

d.pop_front()

删除当前队列中第一个元素

d.push_back(elem)

当前队列的尾部添加元素elem

d.push_front(elem)

当前队列的头部添加元素elem

d.rbegin()

返回当前队列反向的指向首元素的迭代器

d.resize(num,elem)

将当前队列大小调整为num,并且使用元素elem初始化容器

d.size()

返回当前队列的元素个数

d.swap(deque)

交换当前队列与deque队列的内容

 list容器公开接口方法说明

接口方法名称

基本功能说明

assign(n,value)

n个元素值value替换当前链表中元素

assign(firstIter,endIter)

用迭代器firstIterendIter区间内的元素替换链表中元素

back()

返回当前链表最后一个元素的引用

begin()

返回指向当前链表首个元素的迭代器

clear()

清空当前链表中所有元素

empty()

判断当前链表中元素是否为空,为空则返回true

end()

返回指向当前链表最后一个元素的迭代器

erase(iter)

删除当前链表中指示器iter指向的元素

erase(firstIter,endIter)

删除当前链表迭代器firstIterendIter区间内的元素

front()

返回当前链表第一个元素的引用

insert(iter,value)

当前链表中迭代器iter所指位置插入元素value

insert(iter,num,value)

当前链表中迭代器iter所指位置插入num个元素value

insert(iter,firstIter,endIter)

当前链表中迭代器iter所指位置插入区间firstIterendIter之间的元素

max_size()

返回当前链表最大容量,即当前链表可存放元素最大个数

pop_back()

删除当前链表中最后元素

pop_front()

删除当前链表中首元素

push_back(value)

当前链表尾部添加元素value

push_front(value)

当前链表首部添加元素value

rbegin()

返回当前链表反向的首元素迭代器

remove(value)

删除当前链表中所有值为value的元素

remove_if()

删除容器指定元素

rend()

放回指向当前反向链表最后一个元素的指示器

resize(num,value)

调整当前链表,使得当前链表为num个元素,并且将元素初始化为value

reverse()

反调当前链表中元素的顺序

size()

返回当前链表中元素个数

sort()

根据默认排序方式,对当前的链表中元素排序

sort(method)

根据当前给定的模式,对当前链表中元素排序

swap(listValue)

当前链表与listValue链表内部元素互换

unique()

删除当前链表中重复元素



猜你喜欢

转载自blog.csdn.net/cainiao000001/article/details/80209207