順序容器
容器介面卡
vector
支援快速隨機訪問
stack
後進先出
(lifo)
list
支援快速插入/刪除
queue
先進先出
(fifo)
deque
雙端佇列
priority_queue
有優先順序管理的佇列
1、容器型別的操作集合形成了以下層次結構:
1)一些操作適用於所有容器型別;
2)另外一些操作只適用於順序或關聯容器;
3)還有一些操作只適用於順序或關聯容器型別的乙個子集。
2、容器建構函式
cc;建立乙個名為
c的空容器。
c是容器型別名,如
vector,t
是元素型別,如
int或
string
適用於所有容器
cc(c2);
建立容器
c2的副本
c;c和
c2必須具有相同的容器型別
,並存放相同型別的元素。適用於所有容器。
cc(b,e);
建立c,
其元素是迭代器b和
e標示的範圍內元素的副本。
適用於所有容器
cc(n, t);用n
個值為t
的元素建立容器
c,其中值
t必須是容器型別
c的元素型別的值
,或者是可轉換為該型別的值。
只適用於順序容器
cc(n);
建立有n
個值初始化元素的容器
c只適用於順序容器
3、將乙個容器初始化為另乙個容器的副本
將乙個容器複製給另乙個容器時,型別必須匹配:容器型別和元素型別都必須完全相同。
[cpp]view plain
copy
vector<
int> ivec;
vector
> ivec2(ivec);
//ok
vector
> dvec(ivec);
//error
list
> ilist(ivec);
//error
4、初始化為一段元素的副本
系統允許通過一對迭代器間接實現不同種容器之間進行複製:使用迭代器時,不要求容器型別相同,容器內元素型別也可以不相同,只要他們相互相容,能夠將要複製的元素轉換為所構建的新容器的元素型別,即可實現複製。
[cpp]view plain
copy
vectorsvec;
//...
listslist(svec.begin(),svec.end()); //ok
vector::iterator mid = svec.begin() + svec.size()/2;
dequefront(svec.begin(),mid); //ok
dequeback(mid,svec.end()); //ok
char
*word = ;
listslist2(word,word + sizeof
(word)/
sizeof
(*word));
//ok
vector
> ivec;
//...
vector
> dvec(ivec.begin(),ivec.end());
//ok
5、分配和初始化指定數目的元素
不提供元素初始化式時,標準庫將為該容器實現值初始化,採用這種型別的初始化,元素型別必須是內建或復合型別,或者是提供了預設建構函式的類型別。如果元素型別沒有預設建構函式,則必須顯式的指定其元素初始化式。
接受容器大小做形參的建構函式只適用於順序容器,而關聯容器不支援這種初始化。
[cpp]view plain
copy
const
list<
int>::size_type list_size = 64;
list
> ilist(list_size);
//ok
listslist(list_size); //ok
liststrlist(list_size,"ha~"
); //ok
[cpp]view plain
copy
//p267 習題9.2
vectorstrvec1;
vectorstrvec2(strvec1);
vectorstrvec3(strvec2.begin(),strvec2.end());
vectorstrvec4(strvec3.size());
vectorstrvec5(strvec4.size(),"ans"
);
6、容器內元素的約束
c++語言中,大多數型別都可用作容器的元素型別。容器元素型別必須滿足
以下兩個約束:
•元素型別必須支援賦值運算。
•元素型別的物件必須可以複製。
容器操作的特殊要求
支援複製和賦值功能是容器元素型別的最低要求。此外,一些容器操作對元素型別還有特殊要求。如果元素型別不支援這些特殊要求,則相關的容器操作就不能執行:我們可以定義該型別的容器,但不能使用某些特定的操作。
[cpp]view plain
copy
class
foo
};
intmain()
有在同時指定每個元素的初始化式時,才能使用給定容器大小的建構函式來建立同型別的容器物件。
一些同樣適用於人生的計算機原理
學了軟體工程導論和計算機網路,都是理論性很強的內容,有時未免感到乏味,可是仔細看看,書中介紹的不僅是計算機的相關理論,也在講著人生呢。1.錯誤發現與改正得越晚,所需付出的代價也越高。出自軟體工程的七條基本原理之堅持階段性評審 2.得到最廣泛應用的不是法律上的國際標準osi,而是非國家標準tcp ip...
自創 乙個 適用於任何頁面的 動畫管理類
這個動畫管理器最大的好處在於,批處理 當父級距離達到,子級自動動畫,不用再計算距離 和單個處理 精確到單個元素 而且還附帶了 附加方法 動畫執行的同時,附加方法開始執行 也就是說如果滾動到相應區域,你可以很簡單的控制部分或者全部動畫,並且每個動畫可以不同,並且如果你不想寫動畫效果,我這裡還提供了一般...
順序容器的一些操作
新增元素 1.push back 向尾部新增乙個元素,除了array與forward list不支援外,其餘順序容器皆支援 形式 c.push back t 注 把乙個物件新增到容器中,實際上放入的是物件的拷貝值而不是物件本身,隨後對容器中元素的任何改變都不會影響原始物件。2.push front ...