最近在leetcode上面做題,stl的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++
)
其他獲得長度:
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)
;
建立m*n的二維vector: 直接定義
vectorint>
>
nums
(m ,vector<
int>
(n))
;//m*n的二維vector
動態建立m*n的二維vector方法一:
vectorint>
> nums;
nums.
resize
(m);
for(
int i=
0;i) nums[i]
.resize
(n);
方法二:
vectorint>
> nums;
nums.
resize
(m,vector<
int>
(n))
;
動態建立二維陣列nums[m][n]
c語言版:
#include
int*
*a=(
int**)
malloc
(m*sizeof
(int*)
);for(
int i=
0;i)a[i]=(
int*
)malloc
(n*sizeof
(int))
;
c++版:
int
**nums=
newint
*[m]
;for
(int i=
0;i) nums[i]
=new
int[n]
;
初始化二維陣列
vectorint>
>
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++
)}
int size()
:返回容器內的元素個數
void clear()
:清空所有元素
bool empty()
:判斷是否為空
void push_back(int x)
:在表尾新增x
void pop_back()
:刪除表尾元素
back()
:返回表尾元素
front()
:返回表頭元素
operator (int idx)
:返回vector中idx索引位置的物件
int capacity()
:返回vector的內部容量
void reserve(int capacity)
:設定vector的新容量
c vector 基本用法
include a.push back x x 為插入的資料out coll.erase coll.begin i,coll.begin j 刪除區間 i 1,j coll.erase coll.begin 2,coll.begin 5 刪除區間 3,5 coll.erase coll.begin ...
C vector用法初記
建立一維vector vector nums 不指定長度 vector nums n 指定長度為n新增元素 nums.push back 1 直接從陣列末端新增 nums i 1 直接賦值給第i個位置刪除元素 nums.resize nums.size i 直接將陣列長度減小,某種方式上刪掉了後面i...
C vector用法總結
向量 vector 是一種物件實體,能夠容納許多其他型別相同的元素,因此又被稱為容器。與string相同,vector 同屬於stl standard template library,標準模板庫 中的一種自定義的資料型別,可以廣義上認為是陣列的增強版。vector 容器與陣列相比其優點在於它能夠根...