c++ 一維向量,和二維向量的基本使用

吃醋不愛蘸餃子發表於2020-12-17
  • 首先是一維向量和二維向量的初始化
//很簡單,初始化一個n個元素值為1的向量。
//括號可選
vector<int> res(n,1);
//相當於二維m*n的陣列,不過陣列的memset好像只能初始化為0
vector<vector<int> > res(m,vector<int>(n,1))

//預設都初始化為0
vector<int> res(n)
//跟陣列差不多
vector<int> res{1,2,3}

記住後面的兩個>有一個空格,要不然系統會解釋為流操作符。(好像是)

  • 接下來是一維向量的各種成員函式
vector<int> res;
//將n入到向量尾端
res.push_back(n);
//刪除向量尾端的元素,無返回值
res.pop_back()
//返回尾部的引用
int a = res.back()
//返回值bool型
res.empty()
//使用這個可以替代用sizeof求陣列
res.size()
  • 然後就是使用迭代器來遍歷
//初始化一個vector型別的迭代器
vecotr<int> res;
vector<int>:: iterator iter;
for(iter=res.begin();iter!=res.end();iter++){
	cout<<*iter<<endl;
}
//二維的
vector<vector<int> > vec;
vector<vector<int> >::iterator iter2;
for(iter2=vec.begin();iter2!=vec.end();iter2++){
	//內部初始化一個一維向量的迭代器,和一個一維向量來訪問每一行
	vector<int> other = *iter;
	vector<int>::iterator iter3;
	for(iter3=other.begin();iter3!=other.end();iter3++){
		cout<<*iter3<<" ";
	}
	cout<<endl;
}

其實二維向量還是挺麻煩的,不能直接使用下標來訪問。但是一維向量是真的香。

有一種場景我覺得使用二維向量還是挺好的:就是有多個結果集,我們每次找到一個結果集就是一個一維向量,直接push_back到二維向量中,相當於每次一行,還是挺方便的

vector<int> res;
vector<int> track;
if(...){
	// 符合條件就push_back
	res.push_back(track)
}

目前向量我用的就這麼多吧!後續有常用的還會更新uo!

相關文章