循序式容器、關聯式容器、配接器(adaptor)

循序式容器:
1、使用時須含入其相關表頭檔:

#include < vector >
#include < list >
#include < deque >

2、當某容器拷貝至另一個容器,容器型別和元素型別都須相同,也可以透過一對iterator間接完成拷貝,此方法容器型別不用一致,元素也只要相容即可。

vector< int > ivec(10,2);
vector< double > dvec(ivec);                   //錯誤,元素型別不同
list< double > dlist(ivec.begin(),ivec.end()); //正確

3、容器不能放置reference和IO程式庫型別物件。
4、當存放end()返回的iterator做判斷式的依據要小心,有些處理可能導致iterator失效:

vector< int > iterator first = v.begin();
vector< int > iterator last = v.end();
while(first!=last){
  //做某些處理
  first = v.insert(first,0);
  ++first;  //插入元素使得last失效,因為last不指向v的任何元素,導致無窮迴圈
}
while(first!=v.end()){
  //做某些處理
  first = v.insert(first,0);
  ++first;  //這種做法比較安全
}

配接器(adaptor):
1、有三種配接器queue、priority_queue、stack,使用時須先含入相關標頭檔。

#include < stack > //內含配接器stack
#include < queue > //內含配接器queue、priority_queue

2、配接器通常為了特殊情境下使用,比如先進先出的情況使用queue,先進後去的時候stack。
3、配接器和容器的支援方法不盡相同,使用push()、pop()……等。

stack< int > intStack;  //空stack
intStack.push(5);       //intStack擁有元素值5