顺åºå®¹å¨æ¯ä¸ªéè¦ææ¡å°æ¹ä¹æ¯ä¸ªå¾éè¦ç¥è¯ç¹ä¸é¢æ´çæ»ç»ä¸å®åºç¡ä½¿ç¨æè·¯æ¹æ³èè¯å¦ä¹ é½ç¨ä¸( www.)
001顺åºå®¹å¨ç±»å.
vectoræ¯æå¿«ééæºè®¿é®.
listæ¯æå¿«éæå
¥å é¤.
dequeå端éå.
顺åºå®¹å¨éé
å¨.
stackåè¿å
åºæ LIFO.
queueå
è¿å
åºæ FIFO.
priority_queueæä¼å
级管çéå.
002顺åºå®¹å¨å®ä¹,ææ容å¨é½æ¯æ¨¡æ¿,è¦å®ä¹å
·ä½å®¹å¨,å¿
é¡»å¨å®¹å¨ååå 对å°æ¬å·,æ¬å·éæä¾å®¹å¨åæ¾å
ç´ ç±»å.
#<vector>
#<list>
#<deque>
vector<>svec;
list<>ilist;
deque<Sales_item>items;
003顺åºå®¹å¨æé
C<T>c;å建个å为c空容å¨
Cc(c2);å建容å¨c2å¯æ¬c,cåc2å¿
é¡»å
·æç¸å容å¨ç±»å.
Cc(b,e);å建容å¨c,å
¶å
ç´ æ¯è¿ä»£å¨båeæ 示èå´å
å
ç´ å¯æ¬,eæ 示个åæ¢æé,æåå
容并ä¸å¤å¶.
Cc(n,t);ç¨n个tå
ç´ å建容å¨c,åªéå顺åºå®¹å¨,ä¸éåå
³è容å¨
Cc(n);å建n个å¼åå
ç´ å®¹å¨c.åªéå顺åºå®¹å¨,ä¸éåå
³è容å¨
vector<>ivec; [Page]
vector<>ivec2(ivec);//ok.
list<>ilist(ivec);//error,ivecæ¯vectorç±»å,èilistæ¯listç±»å.
vector<double>dvec(ivec);//error,容å¨å
å
ç´ ç±»ååºå«.
004å°ä¸ªå®¹å¨å¤å¶ç»å¦ä¸ªå®¹å¨æ¶,ç±»åå¿
é¡»å¹é
:容å¨ç±»ååå
ç´ ç±»åé½å¿
é¡»ç¸å.
使ç¨è¿ä»£å¨æ¶,ä¸è¦æ±å®¹å¨ç±»åç¸å,容å¨å
å
ç´ ç±»åä¹å¯ä»¥åºå«,åªè¦å®ä»¬äºç¸å
¼å®¹,è½å¤å°è¦å¤å¶å
ç´ è½¬æ¢ä¸ºææ建æ°å®¹å¨ææ建å
ç´ ç±»å.
éç¨è¿ç§æ¹å¼å¯ä»¥å¤å¶ä¸è½ç´æ¥å¤å¶å®¹å¨,ç¹å«,å¯ä»¥å¤å¶å¦å¤å®¹å¨ä¸ªååºå.
list<>slist(svec.begin,svec.end);
vector<>::iteratormid=svec.begin+svec.size/2;
deque<>front(svec.begin,mid);
deque<>back(mid,svec.end);
类似,å¯ä»¥éè¿å
ç½®æéæ¥å个容å¨.
char*words={\"stately\",\"plump\",\"buck\",\"mulligan\"};
size_twords_size=(words)/(char*);
list<>wordsList(words,words+words_size);
åæå®æ°ç®å
ç´ .
constlist<>::size_typelist_size=64;
list<>slist2(list_size,\"heipio\");
list<>ilist2(list_size);
005容å¨å
ç´ éå¶:å¿
é¡»æ¯æèµå¼è¿ç®,对象å¿
é¡»å¯ä»¥å¤å¶.å¼ç¨ç±»åä¸å¯ä»¥ä½ä¸ºå®¹å¨å
ç´ (ä¸è½èµå¼),æ åè¾å
¥è¾åºä¸è½ä½ä¸ºå®¹å¨å
ç´ .
å¦æ类没æé»è®¤æé ,é£ä¹å¨å®ä¹å®¹å¨æ¶å,å¿
é¡»å®ä¹ç©ºå®¹å¨,æè
æä¾æ¾å¼æé åæ°.
å设Fooåªæ个éè¦ä¸ªåæ°æé ,é£ä¹: [Page]
vector<Foo>empty;//ok
vector<Foo>bad(2);//error,æ æ³é»è®¤å建å
ç´ ,æ以ä¸è¡.
vector<Foo>fine(2,0);//ok,éè¿åæ°0,å建两个å
ç´ .
å¯ä»¥å®ä¹å®¹å¨å®¹å¨.
vector<vector<>>lines;
lines.push_back(svec);
006常ç¨è¿ä»£å¨è¿ç®.
*iterè¿åè¿ä»£å¨iterææåå
ç´ å¼ç¨.
iter->mem对iter解å¼ç¨,è·åæå®å
ç´ ä¸memæå,çæäº(*item).mem
iter/iter/--iter/iter--
iter1iter2æ¯è¾ä¸¤ä¸ªè¿ä»£å¨æ¯å¦æåå个å
ç´ (iter1!=iter2).
vectorådeque容å¨é¢å¤è¿ç®.
iter+/-n
iter+/-=n
iter1-iter2
>,>=,<,<=
注æå¦:å¨list容å¨ä¸ä¸æ¯æ\"+/-n\"æä½,ä¹ä¸æ¯æé»è¾å
³ç³»è¿ç®.
007使ç¨è¿ä»£å¨ç¼åæ¶,å¿
é¡»çæé£äºä½¿è¿ä»£å¨å¤±ææä½,é²æ¢éæéé®é¢.é常,è¦æ±æ¶åè¿ä»£å¨ä»£ç å°½å¯è½çå°.
008容å¨å®ä¹ç±»å.
size_type
iterator
const_iterator
reverse_iterator
const_reverse_iterator
dference_type
value_typeå
ç´ ç±»å. [Page]
referenceå
ç´ å¼ç¨ç±»åvalue_type&
const_referenceå
ç´ å¸¸éå·¦å¼ç±»å.
009容å¨beginåendæä½,æ¯ä¸ªæä½è¿å容å¨æ¯å¦ä¸ºconstæå
³.
c.begin/c.end
c.rbegin/c.rend
010容å¨ä¸æ·»å å
ç´ æä½
c.push_back(t)å¨æ«å°¾å t,è¿åvoid.
c.push_front(t)åªéç¨äºlistådeque容å¨ç±»å,è¿åvoid.
c.insert(p,t)å¨påè¾¹æå
¥t,è¿åæåæ°æ·»å å
ç´ è¿ä»£å¨.
c.insert(p,n,t)å¨påè¾¹æå
¥n个t,è¿åvoid.
c.insert(p,b,e)å¨påè¾¹æå
¥è¿ä»£å¨båeçé´å
ç´ ,è¿åvoid.
æ·»å å个å
ç´ .
vector<>svec;
list<>slist;
spouse(\"Beth\");
//çåäºslist.push_front(spouse).
slist.insert(slist.begin,spouse);
//vector没æpush_front,ä½æ¯å¯ä»¥éç¨å¨beginåæå
¥æ¹å¼å®ç°è¯¥åè½.
//è¦æ³¨æ,对äºvector容å¨,å¨åé¨æä¸é´æå
¥å
ç´ ,æ¯é常èè´¹èµæºä¸ªè¡ä¸º.
svec.insert(svec.begin,spouse);
//åç¨insert(p,t)è¿åå¼,循ç¯å容å¨å¤´é¨æ·»å å
ç´ .
list<>::iteratoriter=slist.begin;
while(cin>>spouse){ [Page]
iter=ilist.insert(iter,spouse);
}
æå
¥æ®µå
ç´ .
svec.insert(svec.end,ilist.begin,ilist.end);
sarr[4]={\"wangyi\",\"aichao\",\"master\",\"huawei\"};
svec.insert(svec.begin,sarr,sarr+4);
è¦æ³¨æ,æ·»å å
ç´ å¯è½é æè¿ä»£å¨å¤±æ.æ¯å¦å¨vectorä¸æ·»å å
ç´ ,å¯è½ä¼å¯¼è´æ´ä¸ªå®¹å¨éæ°å è½½,è¿ä»£å¨èªç¶ä¹å°±æ æäº.
å æ¤ä¸è¦ä¿åbeginæendæä½è¿åå¼,èæ¯æ¯æ¬¡ä½¿ç¨æ¶é½è¦æ§è¡æ¬¡è¯¥.
vector<>::iteratorfirst=v.begin;
while(first!=v.end){
first=v.insert(first,42);
first;
}
011å
³ç³»æä½ç¬¦.容å¨æ¯è¾æ¯åºäºå®¹å¨å
å
ç´ æ¯è¾,å¦æå
ç´ ä¸æ¯ææç§ç±»åæ¯è¾,容å¨ä¹å°±ä¸è½åè¿ç§æ¯è¾è¿ç®.
å¦æ两个容å¨å
·æç¸åé¿åº¦èä¸ææå
ç´ ç¸ç,é£ä¹ä¸¤ä¸ªå
ç´ å°±ç¸ç.
å¦æ两个容å¨é¿åº¦ä¸ç¸å,ä½è¾ç容å¨ä¸ææå
ç´ é½çäºè¾é¿å®¹å¨ä¸å¯¹åºå
ç´ ,å称è¾ç容å¨å°äºå¦ä¸ªå®¹å¨.
å¦æ两个容å¨é½ä¸æ¯å¯¹æ¹ååºå,åå®ä»¬æ¯è¾ç»æåå³äºææ¯è¾ç¬¬ä¸ªä¸ç¸çå
ç´ .
/*
ivec1:1357912
ivec2:024681012
ivec3:139
ivec4:1357
ivec5:1357912
*/ [Page]
ivec2<ivec1
ivec1<ivec3
ivec4<ivec1
ivec1ivec5
012容å¨å¤§å°æä½.
c.size
c.max_sizeè¿åç±»åæ¯c::size_type.
c.empty
c.resize(n)å¦æn<c.size,åå é¤å¤åºæ¥å
ç´ ,å¦å,æ·»å å¼ç»æ°æ·»å å
ç´ .
c.resize(n,t)æ°æ·»å å
ç´ ,é½ç¨tæ¥å.resizeæä½å¯è½ä¼ä½¿è¿ä»£å¨å¤±æ.
013访é®å
ç´ .å¦æ容å¨é空,é£ä¹å®¹å¨frontåbackæåå°è¿å容å¨å
第个åæå个å
ç´ \"å¼ç¨\".
注æ:è¿åæ¯å¼ç¨,beginåendè¿åæ¯æé.
(!list.empty){
list<>::referenceval1=*ilist.begin;
list<>::referenceval2=ilist.front;
list<>::referencelast1=*--ilist.end;
list<>::referencelast2=ilist.back;
}
å
¶ä»æä½.
c[n]è¿ä¸¤ä¸ªæä½,åªéç¨äºvectorådeque容å¨.
c.at(n)å¦æç»åºä¸æ æ æ,atä¼æåºout_of_rangeå¼å¸¸,æ以æ¨è使ç¨,æ好è¿æ¯ç¨è¿ä»£å¨.
å¦æ容å¨ä¸ºç©º,é£ä¹ææ访é®å®¹å¨æä½é½æ¯æ²¡æå®ä¹(ä¹å°±æ¯è¯´åªæ鬼æç¥éä¼è¿åç¹ä»ä¸è¥¿),导è´åºç°ä¸¥é.
014å é¤å
ç´ .
c.erase(p)å é¤è¿ä»£å¨pæåå
ç´ ,è¿å被å é¤å
ç´ åè¾¹å
ç´ è¿ä»£å¨. [Page]
c.erase(b,e)å é¤è¿ä»£å¨båeèå´å
å
ç´ ,è¿å被å é¤æ®µåé¢å
ç´ è¿ä»£å¨.
c.clearå é¤å®¹å
å
¨é¨å
ç´ ,è¿åvoid.
c.pop_backå é¤å®¹å¨cæå个å
ç´ ,è¿åvoid,cä¸è½ä¸ºç©º.
c.pop_frontå é¤å®¹å¨c第个å
ç´ ,è¿åvoid,cä¸è½ä¸ºç©º,åªéç¨äºlistædeque.
å é¤ç¬¬ä¸ªæè
æå个å
ç´ ,注æ,pop_backåpop_fronté½æ¯ä¸è¿åå¼.
while(!ilist.empty){
//process(ilist.front);
ilist.pop_front;
}
å é¤å®¹å¨å
个å
ç´ ,è¦æ³¨æ,eraseæ¯ä¸æ£æ¥è¿ä»£å¨åæ°æ¯å¦ææ.
searchValue(\"Quasimodo\");
list<>::iteratoriter=find(slist.begin,silist.end,searchValue);
(iter!=slist.end)
slist.erase(iter);
å é¤å®¹å¨å
ææå
ç´ .
slist.clear;
slist.erase(slist.begin,slist.end);
015èµå¼åswap.é¤swapå¤,æææä½,é½å¯ä»¥ç¨earseåinsertå代.
c1=c2
c1.swap(c2)ç¨c2容å¨å
ç´ å代c1容å¨å
ç´ .
c.assign(b,e)cä¸åæ¥å
ç´ æ¸
空,å°è¿ä»£å¨båeæ è®°èå´å
ææå
ç´ å¤å¶å°cä¸.
c.assign(n,t)
带æ对è¿ä»£å¨assin,å
许æ们å°ä¸ªå®¹å¨å
ç´ èµç»å¦ä¸ªåºå«ç±»å容å¨.
016容å¨capacityåreserveæå.
为äºä½¿vector容å¨å®ç°å¿«éå
ååé
,å
¶å®é
åé
容éè¦æ¯å½åæé空é´å¤äº.vector容å¨é¢çäºè¿äºé¢å¤åå¨åº,ç¨äºåæ¾æ°æ·»å å
ç´ . [Page]
äºæ¯,ä¸å¿
为æ¯ä¸ªæ°å
ç´ éæ°åé
空é´,æ以,æ¯èµ·listådeque容å¨,vectorå¢é¿æçè¦é«äº.
vector<>ivec;
cout<<\"ivec::size\"<<ivec.size<<\"capacity:\"<<ivec.capacity<<endl;
for(vector<>::size_typeix=0;ix!=24;ix)
ivec.push_back(ix);
cout<<\"ivec::size\"<<ivec.size<<\"capacity:\"<<ivec.capacity<<endl;
ivec.reserve(50);
cout<<\"ivec::size\"<<ivec.size<<\"capacity:\"<<ivec.capacity<<endl;
while(ivec.size!=ivec.capacity)
ivec.push_back(0);
cout<<\"ivec::size\"<<ivec.size<<\"capacity:\"<<ivec.capacity<<endl;
ivec.push_back(50);
cout<<\"ivec::size\"<<ivec.size<<\"capacity:\"<<ivec.capacity<<endl;
017容å¨éç¨.
å¦ææ æ³ç¡®å®åºè¯¥éç¨åªç§å®¹å¨,åç¼å代ç æ¶å°è¯åªä½¿ç¨vectorålist容å¨é½æä¾æä½(使ç¨è¿ä»£å¨,èä¸æ¯ä¸æ ),并ä¸é¿å
éæºè®¿é®å
ç´ .
è¿æ ·ç¼å代ç ,å¨å¿
è¦æ¶,å¯å¾æ¹ä¾¿å°ä»ä½¿ç¨vector容å¨ä¿®æ¹ä¸ºä½¿ç¨list容å¨.
018容å¨éé
å¨.
#<stack>
#<queue>
é»è®¤stackåqueueé½æ¯åºäºdeque容å¨å®ç°,èpriority_queueåæ¯å¨vector容å¨ä¸å®ç°,å¦æè¦æ¹åé»è®¤ç±»å: [Page]
stack<,vector<>>str_stack;
priority_queue<,list<>>ipr_queue;
019éé
å¨éç¨ç±»ååæä½.
size_type
value_type
container_type
Aa;
Aa(c);
å
³ç³»æä½
020æ éé
å¨æä½.
s.empty
s.size
s.pop//å é¤æ 顶å
ç´ ,ä½ä¸è¿åå
¶å¼.
s.top//è¿åæ©å®å
ç´ ,ä½ä¸å é¤å
¶å¼.
s.push(item)//å°itemåå¦æ 顶.
//09020.cpp
#<stack>
#<iostream>
usingstd::stack;
usingstd::cout;
usingstd::cerr;
usingstd::endl;
...{
conststack<>::size_typestk_size=10;
stack<>Stack;
ix=0;
while(Stack.size!=stk_size)...{
Stack.push(ix);
}
error_cnt=0; [Page]
while(!Stack.empty)...{
value=Stack.top;
(value!=--ix)...{
cerr<<\"oops!expected\"<<ix<<\"received\"<<value<<endl;
error_cnt;
}
cout<<value<<\"\";
Stack.pop;
}
cout<<endl;
cout<<\"Ourprogramranwith\"<<error_cnt<<\"errors!\"<<endl;
0;
}
021éååä¼å
级éåæ¯ææä½.
q.empty
q.size
q.pop
q.frontè¿åéé¦å
ç´ ,ä½ä¸å é¤è¯¥å
ç´ ,åªéç¨äºéå.
q.backè¿åéå°¾å
ç´ ,ä½ä¸å é¤è¯¥å
ç´ ,åªéç¨äºéå.
q.topè¿åå
·ææé«ä¼å
级å
ç´ ,ä½ä¸å é¤è¯¥å
ç´ ,åªéåä¼å
级éå.
q.push(item)对äºéå,å¨éå°¾åå¦ä¸ªæ°å
ç´ ,对äºä¼å
级éå,å¨éå½ä½ç½®æå
¥æ°å
ç´ .
温馨提示:答案为网友推荐,仅供参考