STL背景知識

來源:互聯網
上載者:User
Vector

vector 是一種Sequence(可變長度的容器,元素依照線性方式儲存),支援隨機存取元素,新增
或是刪除尾端(end)的元素只要常數時間(Constant Time, O(1)),新增或刪除前端或是中間(at the
beginning or in the middle)元素需要線性時間(Linear Time, O(N) ),元素的個數可以動態改變,
記憶體自動管理。是STL中最簡單的類別,在許多情況下也是最有效率的類別,適合用在陣
列大小無法事先預估的場合。

 

/*
* Copyright 2004 J.W.Liang
*/
#include <stdio.h>
#include <vector>
using namespace std;
int main(){
vector<int> container;

// 將 0~9 裝進 vector
for(int i=0;i<10;i++)
container.push_back(i);

// 隨機存取 (Random Access)
printf("6th element:%d\n",*(container.begin()+5));

// 使用 Iterator 循序存取
vector<int>::iterator it;
for(it=container.begin();it!=container.end();++it)
printf("%d ",*it);

// 另外一種方式是直接把array內容裝進vector
int array[10]={1,2,3,4,5,6,7,8,9,10};
vector<int> v2(array,array+10);
printf("\n6th element:%d\n",*(v2.begin()+5));

return 0;
}


Map

當成Hashtable使用,可以在常數時間(Constant Time)存取某個鍵值(Key)。

 
/*
* Copyright 2004 J.W.Liang
*/
#include <stdio.h>
#include <map>
using namespace std;
int main(int argc,char* argv[]){
map<int,bool> IsPrime;
//可以使用 operator [ ] 存取
IsPrime[2]=true;
IsPrime[3]=true;
IsPrime[4]=false;
IsPrime[5]=true;

// 直接存取
printf("%d is prime ? %s\n",3, IsPrime[3]?"true":"false");
//使用 Iterator 走訪 map
map<int,bool>::iterator it=0;
for(it=IsPrime.begin();it!=IsPrime.end();++it){
if(it->second)
printf("%d is a prime number\n",it->first );
else
printf("%d is not a prime number\n",it->first );
}
}


參考資料
  • SGI的STL介紹

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.