標準庫

//STL

// vector
// :對大小的控制,從新配置時的數據移動效率,vector動態增長大小,是以原大小的兩倍另外配置一塊較大的空間,將內容拷貝過來,在原內容以後構造新元素,釋放原空間。

#include<vector>
using namespace std;

//1. 聲明及初始化
vector<int> a;   //聲明一個int型向量a
vector<int> a(10);   //聲明一個初始大小爲10的向量
vector<int> a(10,1);  //聲明一個初始大小爲10且初始值都爲1的向量
vector<int> b(a);    //聲明並用向量a初始化向量b
vector<int> b(a.begin(), a.begin()+3);    //將a向量中從第0個到第2個(共3個)做爲向量b的初始值

int n[] = {1, 2, 3, 4, 5};
vector<int> a(n, n+5);    //將數組n的前5個元素做爲向量a的初值
vector<int> a(&n[1], &n[4]);    //將n[1] - n[4]範圍內的元素做爲向量a的初值

//2. 添加元素
vector<int> a;  
a.push_back(1);    //在尾部加入一個數據
a.pop_back();      //刪除最後一個數據
a.insert(a.begin(), 0);    //在a.begin()以前加入0
a.erase(a.begin());    //將a.begin()的元素刪除
a.erase(a.begin() + 1, a.end());    //將第二個元素之後的元素均刪除

//3.判斷vector是否爲空
vector<int> a;
if(a.empty()){
    a.push_back(1);
}

//4.遍歷訪問vector
vector<int> a;
for(int i = 0; i < a.size(); i++){
    cout << a[i];
}
 
//以迭代器訪問
vector<int>::iterator it;
for(it=a.begin(); it!=a.end(); it++){
    cout<<*it<<" " ;
}


//6.以vector實現二維數組
vector<vector<int>> a(10, vector<int>(5));    //建立一個10行5列的int型二維數組 至關於a[10][5];

####Map:
關聯容器,鍵值對形式存儲,紅黑樹結構實現,複雜度O(logn),

1. map<int,string> a; map<string,int>支持多種類型
2. 添加: map1.insert(pair<int,string>(102,"wobeitianjia"));
         map1.insert(map<int,string>::value_type(102,"tianjia"));
         map1[102]="string";
3. 查找: map1.find(key) 
4. 刪除: map<int,string>::iterator it =map1.find(key);找到後map1.erase(it)

5. 不能sort

// ####set:
// 管理容器,每一個元素只包含一個關鍵字,紅黑樹的平衡二叉檢索樹結構實現,插入元素會自動調整二叉樹的結構,使得每一個子樹根節點鍵值大於左子樹全部節點的鍵值,小於右子樹全部節點的鍵值,另外保證左子樹和右子樹的高度相等。中序遍歷算法,可將鍵值從小到大遍歷出來  

1 插入 insert

2 中序遍歷 相似vector
3 反向遍歷: 反向迭代器reverse_iterator
set<int>s; set<int>::reverse_iterator rit; for(rit=s.rbegin();rit!=s.rend();rit++)
4 元素的刪除: s.erase(2); s.clear();
5 元素的檢索:it=s.find(5); if(it==s.end()) cout<<"not find"<<endl;else cout<<*it<<endl;


#### List:
相關文章
相關標籤/搜索