//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: