C++ vector用法小記

來源:互聯網
上載者:User

標籤:vector   c++   stl   數組   

最近在leetcode上面做題,STL的vector用的甚多,這裡稍微的總結下vector的一些常用方法,包括一維的和二維的,暫時能想到的就給記下了。

一維vector

建立一維vector:

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

添加元素

nums.push_back(1);//直接從數組末端添加nums[i] = 1;//直接賦值給第i個位置

刪除元素

nums.resize(nums.size-i); //直接將數組長度減小,某種方式上刪掉了後面i個nums.pop_back();//刪掉最後一個元素

數組遍曆

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

其他
獲得長度: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

動態建立m*n的二維vector
方法一:

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

方法二:

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

動態建立二維數組nums[m][n]

C語言版:

#include<malloc.h>int **a=(int **)malloc(m*sizeof(int *));for(int i=0;i<m;i++)a[i]=(int *)malloc(n*sizeof(int));

C++版:

int **nums=new int*[m];for(int i=0;i<m;i++) nums[i]=new 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;    }}

C++ vector用法小記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.