c++ STL 之 vector
阿新 • • 發佈:2018-12-14
void test_vector() { int h[] ={1,2,3,4,5}; vector<int> a(h,h+5); vector<int> b(a.begin(),a.begin()+3); //使用迭代器初始化[,) vector<int> c(3,4); //初始化3個4 vector<int> d(b); //拷貝建構函式 vector<int> g(6); //新增6個0 cout<<"g size:"<<g.size()<<" g capacity:"<<g.capacity()<<" g max_size:"<<g.max_size()<<endl; cout<<"a:"<<endl; for(int i = 0 ; i < a.size() ; i++) { cout<<a[i]<<" "; //使用陣列方式訪問 } cout<<"b:"<<endl; for(auto tmp = b.begin(); tmp != b.end(); tmp++) { cout<<*tmp<<" "; //使用迭代器遍歷 } cout<<"c:"<<endl; for each (int var in c) { cout<<var<<" "; //使用for each 遍歷,也可以返回引用修改對應值 } cout<<"d:"<<endl; for(int tmp : d) { cout<<tmp<<" "; //使用for遍歷 } cout<<"g:"<<endl; for(auto i = 0; i<g.size(); i++) { cout<<g.at(i)<<" "; //使用at訪問vector中的元素 } g.push_back(9); //在最後插入一個元素 cout<<" first element:"<<g.front()<<endl; cout<<" last element:"<<g.back()<<endl; g.pop_back(); //刪除最後一個元素 cout<<" last element:"<<g.back()<<endl; g.insert(g.begin(),2); //在某個位置(這個位置為迭代器) 插入值 或者 n個值 或者 一段數值 for (auto i = g.begin(); i != g.end();) { if (*i == 2) { i = g.erase(i); //返回刪除元素最後一個的下一個元素,即將要訪問的元素,故不需要自加 }else { i++; } } g.clear(); //刪除g中所有元素 if (g.empty()) { cout<< "g is empty"<<endl; } g.shrink_to_fit(); //將capacity縮小到實際大小size cout<<endl<<endl; /* resize() 和 reserve() 前者重新分配大小為n個數據記憶體,如果n大於原始空間大小,用預設值或者特定值填寫大於部分;如果小於,取前n個數據 後者如果n大於原始記憶體,重新分配;如果n小於原始記憶體,不做任何操作。 data()函式返回vector中第一個元素的指標,這樣可以通過指標操作訪問所有元素,一般不用。 swap()函式交換兩個vector變數中的元素,也不怎麼使用。 emplace() 和 insert() 前者在容器中直接使用建構函式,後者使用複製構造。 */ }