欧冠

标准C程式库--标准样版库-串列样版

2019-12-04 16:59:43来源:励志吧0次阅读

过去几年以来,C++ 程式语言的标准语言定义程序经历了一个大改变。此标准化程序便是标准资料结构库的产生,此程式库通常称为「标准样版库」( Standard Template Library ) 或 STL 。由於 STL 是 C++ 语言定义的一部份,因此使用 STL 的程式应该享有高度可植性,因为任何标榜支援 " 标准C++" 的编译程式都必须提供 STL 实作。

叠代字只是一种类似指标的物件,可以用来循环存取容器中的所有元素。由於不同的演算法需要以个种不同的方式来游历容器,因此有各种不同的叠代子形式。标准样版库中的每个容器类都提供一种叠代子,适合和实作容器所用的储存技巧配合使用。

在执行过程中,如果一个问题中的元素个数变化非常大,或者无法事先预估元素个数,则不适合采用向量资料型态。在这种情况下,连结串列资料抽象是比较恰当的选择。连结串列的观念是一种很自然的资料抽象,导源於一个问题中的资料结构必须维护一个群集,而群集中的元素个数无法事先预知,或者可能剧烈变化。基本上,连结串列的观念是维护一个串连起来的集合,其串每个动态配置的链都储存一个值与一个指向下一链的指标。如果链不是串列最後一个储专资讯的容器,最简单的形式只储存指向第一个链的指标。

串列有许多型式,大略可分为四种:第一、基本型式,拥有 (1) 链结。第二、可同时储取第一个链和最後一个链,(1)和(3)链结。第三、可以双向游历串列,(1) 和 (2) 链结。第四、包含第二和第三类型,(1)、 (2) 和 (3) 链结。

当我们使用 list 串列时,必须含入 #include :

叠代子

begin 传回一个指向起点的叠代子。

end 传回一个指向终点的叠代子。

rbegin 传回一个指向反转起点的叠代子。

rend 传回一个指向反转终点的叠代子。

Top

宣告及初始化串列

列串和向量一样,是用样版实作出来的。当作样版的型态可用标准资料型态或自订资料型态,但自订资料型态必须设定一个无参数建构子来初始化型态值。另外使用拷贝建构子时,样版会使用此型态的指派运算子 ( = ) 。因此,指派运算子是否要定义可由使用者决定。

list < int > list_one ;

list < float > list_two ( 4 , 3.2 ); file://配置4个元素,初值为 3.2

list < double > list_six ( list_two ); file://拷贝建构子

下列几个成员函式可以将串列中的元素做全面或局部的调整。

insert 将元素插入串列中间。它有两个引数分别为一个叠代子和一个值,此值会插入叠代子的位置前面。例: list_six.insert ( list_six.begin( ) , 1.34 );

assign 类似於指派运算子的函式,但比指派运算子在运用上围更大,需要较多的参数。但是会删除所有的元素。例:list_five.assign(12); file://将串列长度为 12 初值为 0

swap 交换两串列的元素。

Top

将元素放入串列

push_back 将元素从後端推入串列。

push_front 将元素从前端推入串列,例:list_seven.push_front(1.2);

Top

连接两串列

splice 有一点类似 insert 的功能,但原串列的内容会被删除。因为 splice 是将原串列的内容链,直接改成插入的地方,所以资料的位置没有被改变。只是链结的位置改变而已,效率比 insert 快上许多。

merge 合两个有序串列,此成员函式比通用演算法来得有效率,但前提是串列必须已经排序完成。

Top

删除串列

pop_back 传回最後一个元素,并将它从串列中删除。

pop_front 传回最前面一个元素,并将它从串列中删除。

remove 删除串列中某一个值的元素。例:list_nine.remove(4); file://删除串列中所有资料是 4 的元素

remove_if 删除满足某一条件的所有值。它和 remove 函式比通用演算法更有效率。例:list_nine.remove_if(divisibleByThree);

erase 删除两个叠代子中间的元素。可以只指定一个叠代子,其功能为删除此叠代子到最後一个的元素。

unique 移除所有相邻种元素,只保留第一个元素。使用者可以利用可有可无的二元函式来取代相等比较运算子。例:list_nine.unique();

clear 删除所有的元素。

Top

长度和大小的改变

empty 检查元素个数是否为零个。

resize 可改变串列长度,加长或减少。加果加长的话,可以设定初值。

size 传回容器中所储存元素的个数。

Top

存取元素和叠代子

front 传回容器中第一个元素。

back 传回容器中最後一个元素。

Top

排序

sort 将元素编排成递增顺序,它所采用的是一个有效率的演算法。如果比较运算子不是< ,可以当成引数传入函式中。例:list_twelve.sort (widgetCompare);

Top

其它

max_size 可建立元素的最大个数。

reverse 将串列中每一个元素反转。

丁桂薏芽健脾吃多久
小儿感冒药
小儿口臭
8岁儿童口臭怎么办
分享到: