C++ vector用法小記
最近在leetcode上面做題,STL的vector用的甚多留夜,這里稍微的總結(jié)下vector的一些常用方法包警,包括一維的和二維的,暫時能想到的就給記下了诞挨。
一維vector
創(chuàng)建一維vector:
vectornums;//不指定長度vectornums(n);// 指定長度為n
添加元素
nums.push_back(1);//直接從數(shù)組末端添加nums[i] =1;//直接賦值給第i個位置
刪除元素
nums.resize(nums.size-i); //直接將數(shù)組長度減小凡橱,某種方式上刪掉了后面i個nums.pop_back();//刪掉最后一個元素
數(shù)組遍歷
for(inti=0;i
? ? cout<
}
其他?
獲得長度:nums.size()?
排序(O(nlogn)):sort(nums.begin(),nums.end());?
翻轉(zhuǎn):reverse(nums.begin(), nums.end());?
合并兩個vector:合并nums1和nums2,并將合并后的數(shù)組賦值給nums
vectornums1(m),nums2(n);vectornums;nums.resize(m+n);merge(nums1.begin(), nums1.end(),nums2.begin(),nums2.end(),nums);
二維vector
創(chuàng)建m*n的二維vector:?直接定義
vector>nums(m ,vector(n));//m*n的二維vector
動態(tài)創(chuàng)建m*n的二維vector?
方法一:
vector>nums;nums.resize(m);for(inti=0;i
方法二:
vector>nums;nums.resize(m,vector(n));
動態(tài)創(chuàng)建二維數(shù)組nums[m][n]
C語言版:
#includeint**a=(int**)malloc(m*sizeof(int*));for(inti=0;i
C++版:
int**nums=newint*[m];for(inti=0;i
初始化二維數(shù)組
vector>nums(m ,vector(n,0));//m*n的二維vector亭姥,所有元素為0
獲得二維數(shù)組的行數(shù):nums.size();?
獲得二維數(shù)組的列數(shù):nums[0].size()
數(shù)組遍歷
intm = nums.size(),n = nums[0].size();for(inti =0; i < m; i++){for(intj =0; j < n; j++){? ? ? ? cout<