C++基礎(4)——vector

  1. vector是一個能夠存放任意類型的動態數組,能夠增加和壓縮數據。
  2. 必須包含頭文件#include,全局命名域方式using namespase std;
  3. vector使用方式
    (1) vector c,c;
    (2) vector c(n);//定義已知長度的向量,類似於int a[10];
  4. vector初始化
    (1) vector c(10);//定義長度爲10的整型向量,初始值隨機;
    (2) vector c(10,1);// 定義長度爲10的整型向量,初始值都爲1;
    (3) vector c(b);//用b向量創建c向量,整體複製性賦值;
    (4) vector c(b.begin(),b.begin()+3);//定義向量a,爲b中的第0個元素到第2個元素;
  5. 成員函數
函數 表述
c.assign(b.begin(),b.end());c.assign(n,elem) 將b向量[beg;end)區間的數據賦值給c;將n個值爲elem的拷貝賦值給c
c.at(idx) 傳回索引idx所指的數據,如果idx越界,拋出out_of_range
c.back() 傳回最後一個數據,不檢查這個數據是否存在。
c.begin() 傳回迭代器中的第一個數據。
c.capacity() 返回容器中數據個數。
c.clear() 移除容器中所有數據。
c.empty() 判斷容器是否爲空。
c.end() 指向迭代器中的最後一個數據地址。
c.erase(pos); c.erase(beg,end) 刪除pos位置的數據,傳回下一個數據的位置。 刪除[beg,end)區間的數據,傳回下一個數據的位置。
c.front() 傳回第一個數據。
get_allocator 使用構造函數返回一個拷貝。
c.insert(pos,elem) ; c.insert(pos,n,elem); c.insert(pos,b.begin(),b.end()) 在pos位置插入一個elem拷貝,傳回新數據位置。 在pos位置插入n個elem數據。無返回值。 在pos位置插入在[beg,end)區間的數據。無返回值。
c.max_size() 返回容器中最大數據的數量。
c.pop_back() 刪除最後一個數據。
c.push_back(elem) 在尾部加入一個數據。
c.rbegin() 傳回一個逆向隊列的第一個數據。
c.rend() 傳回一個逆向隊列的最後一個數據的下一個位置。
c.resize(num) 重新指定隊列的長度。
c.reserve() 保留適當的容量。
c.size() 返回容器中實際數據的個數。
c1.swap(c2) ; swap(c1,c2) 將兩個向量的元素整體互換。 同上操作。
vector c; vector c1(c2); vector c(n); vector c(n, elem); vector c(beg,end); c.~ vector () 創建一個空的vector。 複製一個vector。 創建一個vector,含有n個數據,數據均已缺省構造產生。 創建一個含有n個elem拷貝的vector。 創建一個以[beg;end)區間的vector。 銷燬所有數據,釋放內存。
  1. 添加\讀取\刪除元素
    (1) a.push_back(num);//向量尾部添加元素
    (2) 從數組中選取元素放入向量
    int a[5] = {1,2,3,4,5};
    vector vec(a,a+5);
    (3) Btemp.erase(find(Btemp.begin(),
    Btemp.end(), Ob_1));// vector類型需要先找到元素的位置,再使用刪除函數
    Btemp.erase(Ob_1);//set類型的刪除函數,只需要寫具體元素值
    (4) cout<<a[i];//輸出向量a的第i個元素,注意,只有向量裏面存在元素時,才能使用下標的方式進行讀取,不能用下標的方式進行賦值。
    (5) vector::iterator it;//迭代器方式讀取向量元素
    it=c.begin();
    cour<<*it;
  2. 相關算法使用
    (1) 需要包含頭文件#include
    (2) sort(a.begin(),a.end()); //對a中的從a.begin()(包括它)到a.end()(不包括它)的元素進行從小到大排列
    sort自定義排序,定義比較函數,然後將函數名作爲sort函數的參數傳入。
    bool Compare();
    sort(c.begin(),c.end(),Compare);
    (3) reverse(a.begin(),a.end()); //對a中的從a.begin()(包括它)到a.end()(不包括它)的元素倒置,但不排列,如a中元素爲1,3,2,4,倒置後爲4,2,3,1
    (4) copy(a.begin(),a.end(),b.begin()+1); //把a中的從a.begin()(包括它)到a.end()(不包括它)的元素複製到b中,從b.begin()+1的位置(包括它)開始複製,覆蓋掉原有元素
    (5) find(a.begin(),a.end(),10); //在a中的從a.begin()(包括它)到a.end()(不包括它)的元素中查找10,若存在返回其在向量中的位置
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章