我覺得實驗一下會記得比較牢,話不多直接上代碼。
下面是array數組,感覺用的不多。
//cpp 風格數組 array #include <iostream> #include <array> #include <vector> using namespace std; int main() { array<int , 6> myint = {1 , 2 , 34, 45 , 0 , -2}; for(int i = 0 ; i < myint.size() ; i++) //size 獲取長度,vector也是這樣獲取長度的 cout << myint[i] <<" " << (void *)&myint[i] << endl; array<int , 5> a1 = {1 , 2 ,3 ,4 ,5}; array<int , 5> a2 = {0 , -1 , -2 , -3 , -5}; array <int , 5> a3 = {8, 9 , 10 , 11 , 22}; array<array<int , 5> , 3> a = {a1 , a2 , a3}; for(int i = 0 ; i < a.size() ; i++) { for(int j = 0 ; j < a[0].size() ; j++) cout << a[i][j] << " "; cout << endl; } cout <<endl; for(auto i : a) //c++11語法 { for(auto j : i) cout << j << " "; cout <<endl; } cout <<endl; }
下面是vector數組,覺得挺強大的。
一些基本的操作函數也不過 push_back() 尾部插入, pop_back() 尾部刪除, size() 獲取大小, erase() 指定位置刪除, clear() 清空, insert() 指定位置插入 , empty() 判斷數組是否為空 為空返回true, front() 返回第一個元素的引用, back() 返回最后一個元素的引用, begin() 返回首元素的迭代器, end() 返回尾元素的迭代器。
#include <iostream> #include <vector> using namespace std; int main() { vector<double>db; //數組的大小可變 堆上的數組不一定是連續的 double m; for(int i = 0 ; i < 4 ; i++) { cin >> m; //不能直接cin輸入到db中 因為還沒分配內存 db.push_back(m); //插入數據 自動變長 cout << db[i] << " " << (void*)&db[i] <<endl; } cout << db[1] << " " << (void*)&db[1] << endl << endl; cout << &db <<endl; //db不是指針 for(auto i : db) //這些i 和下面的ia ib ....都在棧上 { cout << i << " " << (void *)&i << endl; //&i只能取首地址 } cout << endl << endl; auto ia = db.begin(); //開始 auto ib = db.end(); //結束 for( ; ia != ib ; ia++) { cout << *ia << " "; } cout <<endl; auto iia = db.rbegin(); //從尾部 auto iib = db.rend(); for( ; iia != iib ; iia++) { cout << *iia << " - "; } }
#include <iostream> #include <vector> using namespace std; int main() { vector<int >a1 , a2; vector<int >a3; a1.push_back(2); a2.push_back(3); a2.push_back(4); a2.push_back(5); a3.push_back(10); a3.push_back(99); vector<vector<int>> a = {a1 , a2 , a3}; for( auto i : a) { for(auto j : i) cout << j << " "; cout <<endl; } //多個vector可以實現嵌套 實現鋸齒多維數組 長度可以不確定 //多個array嵌套可以實現多維數組 但是長度必須等長 }
#include <iostream> #include <vector> using namespace std; int main() { vector <string> str; str.push_back("WEL come!"); str.push_back("Hello"); str.push_back("World"); str.push_back("China"); str.pop_back(); //尾部刪除一個 //str.clear(); //清空 for(auto ia = str.begin() ; ia != str.end() ; ia++) { if((*ia) == "Hello") { str.erase(ia); //刪除之后begin會發生變化 // break; } cout << *ia << endl; } str.erase(str.begin() + 1); // 刪除 cout << endl; for(auto i : str) // 兩種遍歷輸出 下面是另一種 { cout << i << " "; } cout << endl; str.insert(str.begin() +1 , "HHHH"); //不能越界插入 可以在范圍內插入 for(auto i : str) // 兩種遍歷輸出 下面是另一種 { cout << i << " "; } }