1. 程式人生 > 程式設計 >簡單講解c++ vector

簡單講解c++ vector

在c++中,vector是一個十分有用的容器。

作用:它能夠像容器一樣存放各種型別的物件,簡單地說,vector是一個能夠存放任意型別的動態陣列,能夠增加和壓縮資料。

vector在C++標準模板庫中的部分內容,它是一個多功能的,能夠操作多種資料結構和演算法的模板類和函式庫。

特別注意:

使用vector需要注意以下幾點:

1.加入標頭檔案 <vector>

2.如果你要表示的向量長度較長(需要為向量內部儲存很多數),容易導致記憶體洩漏,而且效率會很低;

3.Vector作為函式的引數或者返回值時,需要注意它的寫法:

double Distance(vector &a,vector &b) 其中的“&”絕對不能少!!!

一維vector

建立一維vector:

vector<int> nums;    //不指定長度
vector<int> nums(n);  //指定長度為n

新增元素

nums.push_back(1);   //直接從陣列末端新增
nums[i]=1;       //直接賦值給第i個位置
nums.insert(nums.begin()+i,a); //在第i+1個元素前插入a

刪除元素

nums.resize(nums.size-i);  //直接將陣列長度減少,某種意義上刪掉了後面i個
nums.pop_back();       //刪掉最後一個元素
nums.erase(nums.begin()+i); //刪掉第i+1個元素
nums.erase(nums.begin()+i,nums.end()+j);  //刪除區間[i,j-1],區間從0開始
nums.clear();        //清空

其它

獲取長度:nums.size();

排序(O(nlogn)):sort(nums.begin(),nums.end());

翻轉:reverse(nums.begin(),nums.end());

合併兩個vector:合併nums1和nums2,並將合併的陣列賦值給nums

vector<int> nums1(m),nums2(n);
vector<int> nums;
nums.resize(m+n);
merge(nums1.begin(),nums1.end(),nums2.begin(),nums2.end(),nums);

二維vector

建立M*n二維vector

vector< vector<int> > nums(m,vector<int>(n));  //m*n的二維vector

解釋:

定義了一個vector容器,元素型別為vector ,初始化為包含m個vector 物件,每個物件都是一個新創立的vector 物件的拷貝,而這個新創立的vector 物件被初始化為包含n個0。

vector (n)表示構造一個無名且含n個0的vector 物件。

動態建立m*n的二維vector

方法一

vector<vector <int> > nums;3

nums.resize(m);
for(int i=0;i<m;i++) nums[i].resize(n);

方法二

vector<vector <int> > nums;
nums.resize(m,vector<int>(n));

初始化二維陣列

vector<vector <int> > nums(m,vector<int>(n,0));  //m*n的二維vector,所有元素為0

獲得二維陣列的行數:nums.size();

獲得二維陣列的列數:nums[0].size();

陣列遍歷

int m = nums.size(),n = nums[0].size();
for(int i = 0; i < m; i++){
  for(int j = 0; j < n; j++){
    cout<<nums[i][j]<<endl;
  }
}

用vector還可以用結構體型別喲

以上就是簡單講解c++ vector的詳細內容,更多關於c++&vector的資料請關注我們其它相關文章!