簡單講解c++ vector
在c++中,vector是一個十分有用的容器。
作用:它能夠像容器一樣存放各種類型的對象,簡單地說,vector是一個能夠存放任意類型的動態(tài)數(shù)組,能夠增加和壓縮數(shù)據(jù)。
vector在C++標準模板庫中的部分內(nèi)容,它是一個多功能的,能夠操作多種數(shù)據(jù)結(jié)構(gòu)和算法的模板類和函數(shù)庫。
特別注意:
使用vector需要注意以下幾點:
1.加入頭文件 <vector>
2.如果你要表示的向量長度較長(需要為向量內(nèi)部保存很多數(shù)),容易導致內(nèi)存泄漏,而且效率會很低;
3.Vector作為函數(shù)的參數(shù)或者返回值時,需要注意它的寫法:
double Distance(vector &a, vector &b) 其中的“&”絕對不能少?。?!
一維vector
創(chuàng)建一維vector:
vector<int> nums; //不指定長度 vector<int> nums(n); //指定長度為n
添加元素
nums.push_back(1); //直接從數(shù)組末端添加 nums[i]=1; //直接賦值給第i個位置 nums.insert(nums.begin()+i,a); //在第i+1個元素前插入a
刪除元素
nums.resize(nums.size-i); //直接將數(shù)組長度減少,某種意義上刪掉了后面i個 nums.pop_back(); //刪掉最后一個元素 nums.erase(nums.begin()+i); //刪掉第i+1個元素 nums.erase(nums.begin()+i,nums.end()+j); //刪除區(qū)間[i,j-1],區(qū)間從0開始 nums.clear(); //清空
其它
獲取長度:nums.size();
排序(O(nlogn)):sort(nums.begin(),nums.end());
翻轉(zhuǎn):reverse(nums.begin(),nums.end());
合并兩個vector:合并nums1和nums2,并將合并的數(shù)組賦值給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
創(chuàng)建M*n二維vector
vector< vector<int> > nums(m,vector<int>(n)); //m*n的二維vector
解釋:
定義了一個vector容器,元素類型為vector ,初始化為包含m個vector 對象,每個對象都是一個新創(chuàng)立的vector 對象的拷貝,而這個新創(chuàng)立的vector 對象被初始化為包含n個0。
vector (n)表示構(gòu)造一個無名且含n個0的vector 對象。
動態(tài)創(chuàng)建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));
初始化二維數(shù)組
vector<vector <int> > nums(m ,vector<int>(n,0)); //m*n的二維vector,所有元素為0
獲得二維數(shù)組的行數(shù):nums.size();
獲得二維數(shù)組的列數(shù):nums[0].size();
數(shù)組遍歷
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還可以用結(jié)構(gòu)體類型喲
以上就是簡單講解c++ vector的詳細內(nèi)容,更多關(guān)于c++&vector的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
淺析C++模板類型中的原樣轉(zhuǎn)發(fā)和可變參數(shù)的實現(xiàn)
可變參數(shù)模板(variadic templates)是C++11新增的強大的特性之一,它對模板參數(shù)進行了高度泛化,能表示0到任意個數(shù)、任意類型的參數(shù),這篇文章主要介紹了C++可變參數(shù)模板的展開方式,需要的朋友可以參考下2022-08-08用while判斷輸入的數(shù)字是否回文數(shù)的簡單實現(xiàn)
這篇文章主要介紹了用while判斷輸入的數(shù)字是否回文數(shù)的簡單實現(xiàn),需要的朋友可以參考下2014-02-02