1
;)1、3、2为变将序顺的素元个三这出取pop过通么那,用使 的1对了生发,后3、2、1入加hsup在,果如。3、2、1是次依序顺的素元个三这出取pop过通则,3、2
、1入加hsup过通列队空个一对,如例(素元到用使有没间时⻓最是素元的出取,时素元出取pop用使 .4 ;素元的新进入加再,素元的到用使未间时
⻓最出取先会作操hsup,时满已列队当而;素元入加中列队向接直以可hsup用使以可,时满未列队当 .3 ;素元个那的用使被未久最用使将,时值同相有具素元个多有,用使值按行进esu过通以可列队存缓 .2
;定确小大的入传时化例实板模由小大其,素元的量数定给过超不储存以可列队存缓个每 .1 :括包能功体具的它。素元据数的用使被近最留保于向倾列队存缓
。能功种各成完法算的有已LTS用使够能其使,器代迭的属专写编其为要需还,后 之器容了现实。列队存缓的现实要里这如比,器容的能功义定自现实要需还们我,求需的定特了为候时有
。上型类据数的同不、器容的同不在用作的单简很以可法算的同 相得使,问访器容过通接直是不而,容内的器容型泛问访器代迭过通。想思计设要重的LTS ++C是器代迭
)读阅续后可,容内求要验测非(明说展扩
项事意注
明说据数
现实和计设的器代迭向前与列队存缓
绍介景背
器代迭于关
度杂复间时的法算
例示 例示 例示 例示用调 求要务任 绍介景背
1 #include
2
3 template
begin, end
4
5 // T L CacheQueue
6 template
7 class CacheQueue
8{
9 public:
10 //
11 using iterator=Iter
12 using size_type=size_t;
13 using difference_type=ptrdiff_t;
14 using value_type=T;
15 using pointer=T*;
16 using reference=T&;
17
18 //CacheQueue
19 CacheQueue();
20
21 //
22 //
23 // 071
24 reference operator[](size_type idx);
CacheQueue
0 2734 2
2
推类次依, 是就量移偏的 , 是就量移偏的 么那, 为次依素元的用使近最到用使未久最从素元列队,如例
)素元的用 使有没间时⻓最是素元的 为标下即(近及远由间时用使次上示表,大到小由序顺的标下 用引的素元回返,数函载重的符作操问访标下
的中
义定以明声置前
量数大最的素元的含包以可 是 ,型类的素元据数是 数参板模 器代迭
。数函员成的求要中架框现实并,员成据数的类计设请,架框本基的类个两这了供提 们我,度难低降为。素元的用使近最到历遍个逐,素元的到用使有没久最从,是序顺的历遍器代迭向前求 要们我;retI类器代迭向前的上eueuQehcaC在用作个一和,eueuQehcaC类列队存缓的型泛个一写编请
数函造构认默的
。素元出取和储存序顺的入加照按能只eueuq的LTS,言而比相*
。序顺的pop变改会不问访标下过通意注;)素元的用使有没间时⻓最是素元的0为 标下即(近及远由间时用使次上示表,大到小由序顺的标下,问访行进标下过通以可也素元的列队存缓 .5
名别型类
求要务任
25
26 // val
27 void use(value_type val);
28
29 // CacheQueue
30 // CacheQueue pop
31 // true
32 bool push(value_type val);
33
34 // CacheQueue
35 // pop
false
36 // true
37 bool pop();
38
39 // begin
40 iterator begin();
41
42 // end C++ end
43 iterator end();
44 private:
45 //…
46 };
false
[begin,end)
pop
9 10
using container_type=CacheQueue
1 #include
2 #include
3
4 template
5 class Iter
6{
7 public:
8 // STL
3
器代迭于属类该为认不 则否,除删能不,名别型类
。素元的置位个一哪的器容个一哪是的问访在前当了录记器代迭
是上际实围范据数器容以所,置位 个一下的素元个一后最向指象对器代迭的回返 ,准标 照按, 象对器代迭回返
置位的素元的用使未间时⻓最向指即, 象对器代迭回返
空为前 用调列队示表 ,功成出取示表 回返 来出 素元的到用使有没间时⻓最将 素元出取 从
满已列队前加添示表 回返,满未列队前加添示表 回返 素元的新入加再,素元的用使有没间时⻓最出 先,时满已 当 素元加添 向
素元 的过用使被未久最是的用使次本则,值的同相有具素元个多有果如,素元的 为值用使
11 using size_type=size_t;
12 using difference_type=ptrdiff_t;
13 using value_type=T;
14 using pointer=T*;
15 using reference=T&;
16 using iterator_category = std::forward_iterator_tag;//
17
18 //
19 //cq offset
20 Iter(container_type &cq,difference_type offset);
21
22 // 23
24 //
25 bool operator==(const iterator &iter);
26 bool operator!=(const iterator &iter);
27
28 //
iter
29 iterator& operator=(const iterator &iter);
30
31 //
32 reference operator*();
33
34 //
35 iterator &operator++();
36 //
37 iterator operator++(int);
38
39 private:
40 //…
41 };
ptr *ptr
4
⻉拷的器代迭的前增 递是的回返但,置位个一下的素元器容前当向指器代迭使,数函载重的符算运增自置后
用引的器 代迭回返再,置位个一下的素元器容前当向指器代迭使先,数函载重的符算运增自置前
用引的素元据数器容 向指器代迭回返, 作操问访接间的 针指对于当相,数函载重的符作操问访接间
用引的器代迭前当回返,置位的同相 与 向指为置设象对器代迭前当将,器代迭的器容个一同向指入传,数函载重的符作操值赋
标器代迭向前
置位个一同的器容个一同了向指否是即,等相否是器代迭个两断判 符作操器代迭载重
指器代迭该即,置位的素元中器容的向指器代迭是
标下的素元向 ,象对器容的应对器代迭是
数函造构的器代迭
志
1 CacheQueue
2 cache_queue.pop()//
3 cache_queue.push(1);// cache_queue 4 cache_queue.push(2);
5 cache_queue.push(3);
6 cache_queue.push(4);
7 cache_queue.use(1);//
8 cache_queue.pop();//
true
9 cache_queue.push(5); 10 cache_queue.push(6);//
36
int false
1
1
2 2
1
6
1 CacheQueue
3 cache_queue.push(2.2);
4 cache_queue.push(3.3);//1.1 3.3 5 cache_queue.push(4.4);//2.2 4.4 6 cache_queue[1]=7.7;//4.4 7.7 7 *cache_queue.begin()=1.1;//3.3
double
false false
1.1
1.1 7.7
5
列队存缓的
为型类据数储存个一化始初
了为变据数列队存缓前当, 了为改修被 了为改修被
回返时同,入放被 ,出弹被 回返时同,入放被 ,出弹被
未间时⻓最前当中列队把先,前 据数加添故,满已列队存缓于由
将故, 是据数的用使未间时⻓最在现以所,了过用使被才刚 于由 据数存缓问访
列队存缓的
为型类据数储存个一化始初
据数加添 向 回返接直故,空为列队存缓时始初于由
据数加添并,出弹 据数的用使
回返并,出弹
3例示
2例示
1例示 例示用调
1 // cache_queue 1 2 3 4 5 nt,10>
2
3 Iter
CacheQueue second_iter(iter);//
16 Iter
3
17 third_iter=second_iter;// second_iter
cache_queue third_iter
cache_queue end
6
代迭的
到定绑个一建创 象对器代迭的新建创数函造构⻉拷过通
器代迭 的
是果结 向指器代迭到直,器代迭增递并据数向指器代迭印打环循
向指即,器代迭
的列队存缓得获
是型类列队存缓,
是次依据数
列队存缓,时始初
向指 向指
前当,置位个一动移前向 器代迭将 前当,置位个一动移前向 器代迭将
数函niam含包中码代在要不 .6 度杂复间时的法算求要有没验测次本 .5 入导复重免避,系关赖依的eueuQehcaC与retI理处意注请 .4
;)类征特stiart_rotareti足满即(征特器代迭义定自 的求要LTS是这,名别型类的中类retI在义定去删能不也,义定口接变改能不但,员成类加添意任以可 .3 ;例样有所过通法无能可式方的器代迭LTS用复过通,库LTS何任于赖依该应不器代迭的现实 .2
态状问访的中eueuQehcaC变 改不器代迭和][rotarepo如,式方问访的他其,定确用调的数函esu据根仅用使近最和用使未间时⻓最 .1
给值赋 将
围范值取L值数的列队存缓化例实于用 .2 =!与==符算运了载重T型类的列队存缓化例实于用 .1
素元的向指 问访
项事意注
明说据数
据数向指并,器
器代迭的
1 XXXX.zip
2|
3 |–Iter.h
4 |–CacheQueue.h
1 //for range
2 for(auto &&val : cq)
3{
4 cout<
10 //…
7
了用调然自以可就句语++C列下,类器代迭和类器容完写编求要的面上求要照按你旦一 器代迭于关
路思现实的 考思请,了小很就义意的现实中践实法算 非 ,存缓为作是但,的 者或 是能可度杂复间时的作操pop ,hsup者或esu的列队存缓的现实的你
度杂复间时的法算 )读阅续后可,容内求要验测非(明说展扩
传上包缩压piz成 包打其将并,件文个两下以建创要需只你以所,化例实行进中niam在以中件文头在放要义定的类板模 .7
器容他其化始初器代迭用
句语
8-ftu为式格码编件文 .6
1 // [first,last) Pred true
2 find_if(_InIt _First,_InIt _Last,_Pr _Pred);
3
4 // [first,last) oldval newval
5 replace(_FwdIt _First,_FwdIt _Last,const _Ty &_Oldval,const _Ty &_Ne
wval);
6
7 // [first,last) val
8 accumulate(_InIt _First,_InIt _Last,_Ty _Val);
9
10 //…
8
。器 代迭问访机随为现实器代迭的义定将要需就,序排数函)(tros用使够能列队存缓的义定面上使想你果如,如 例,型类器代迭的同不了求要上实事法算LTS的同不。器代迭向前个一是也定一器代迭问访机随如例,系 关承继在存间之们它。等)gat_rotareti_modnar(器代迭问访机随,)gat_rotareti_lanoitceridib( 器代迭向双,)gat_rotareti_tuptuo(器代迭出输,)gat_rotareti_tupni( 器代迭入输有还C,外)gat_rotareti_drawrof(器代迭向前的现实求要面上了除 。利便的大很来带们我为将,器代迭和器容写编范规C照按,⻅可
到值的间 计累
为换替值的等相 和有所中 将
器代迭的素元的 为 词谓使个一第间 回返
:口接下以的中库法算LTS用使功成够能及以