c++ 之 vector技巧&避坑&提高效率
阿新 • • 發佈:2019-02-10
結合自己知識,整理如下,更方便使用,增加了要避開的坑和使用技巧
容器的使用
#include <vector> { 初始化 //vector從0下標開始; vector<int> v, v1;//空容器 vector<int> v(3)//包含3個元素; vector<int> v(3,9)//包含3個元素,每個元素都是9; vector<int> v(v1)//copy v1; int a[3] = {0,1,2}; vector<int> v(a,a+3)//copy a陣列; 狀態 v.size()//返回v個數,空是時候是0,空時不可atuo i = v.begin(); v.begin()//首地址 v.end()//末元素地址+1;for裡終止條件 auto i != v.end(); i < end(); i <= v.end()-1; //有點像陣列最後一位的空位置 v.at(i) == v[i]//推薦使用後者; bool is = v.empty();/空返回true,不空返回false; v.push_back(n)//在尾部新增n進容器; v.pop_back()//刪除尾元素; 二維容器 vector<vector<int>> vector<int> v[5]; 遍歷 for(auto i = v.begin() ; i < v.end() ; i++ ) cout << *i;////auto 推薦使用; for(auto i = v.begin() ; i != v.end() ; i++ ) cout << *i; for(vector<int>::iterator it = vecIntB.begin() ;it!=vecIntB.end();it++) cout<<*it; 通過陣列修改 1.通過陣列方式修改, 如v[1] = 55; // 推薦使用; 刪除 v.erase(v.begin()+2)//刪除第3個元素(v.begin()+2地址所在); v.erase(v.begin()+2,v.begin()+5)//刪除第3-5個元素(v.begin()+4地址所在)及以後所有元素; v.erase(v.begin(),v.end());//清空 v.clear() ;//清空; v.pop_back() & v.erase() & v.push_back 後 v.size() 會變; 注:姑且認為中v(v.begin(),v.end()) => v(p1,p2), p1為操作起始地址,p2為操作元素末地址+1, 類似sort(); 大概就是像操作p1->p2,需要中(p1,p2+1) (!!!此條僅為方便記憶,不保證說法的嚴謹,也歡迎大家指正) 如有錯誤,歡迎指正,如有不足,歡迎補充。 }
歡迎轉載,請註明出處即可
歡迎造訪我的www.github.com/15715216140