1. 程式人生 > >c++ 之 vector技巧&避坑&提高效率

c++ 之 vector技巧&避坑&提高效率

結合自己知識,整理如下,更方便使用,增加了要避開的坑和使用技巧

容器的使用

#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