C++中vector容器的用法
在c++中,vector是一個十分有用的容器,下面對這個容器做一下總結(jié)。
1 基本操作
(1)頭文件#include<vector>.
(2)創(chuàng)建vector對象,vector<int> vec;
(3)尾部插入數(shù)字:vec.push_back(a);
(4)使用下標訪問元素,cout<<vec[0]<<endl;記住下標是從0開始的。
(5)使用迭代器訪問元素.
vector<int>::iterator it; for(it=vec.begin();it!=vec.end();it++) cout<<*it<<endl;
(6)插入元素: vec.insert(vec.begin()+i,a);在第i+1個元素前面插入a;
(7)刪除元素: vec.erase(vec.begin()+2);刪除第3個元素
vec.erase(vec.begin()+i,vec.end()+j);刪除區(qū)間[i,j-1];區(qū)間從0開始
(8)向量大小:vec.size();
(9)清空:vec.clear();
2
vector的元素不僅僅可以使int,double,string,還可以是結(jié)構(gòu)體,但是要注意:結(jié)構(gòu)體要定義為全局的,否則會出錯。下面是一段簡短的程序代碼:
#include<stdio.h> #include<algorithm> #include<vector> #include<iostream> using namespace std; typedef struct rect { int id; int length; int width; //對于向量元素是結(jié)構(gòu)體的,可在結(jié)構(gòu)體內(nèi)部定義比較函數(shù),下面按照id,length,width升序排序。 bool operator< (const rect &a) const { if(id!=a.id) return id<a.id; else { if(length!=a.length) return length<a.length; else return width<a.width; } } }Rect; int main() { vector<Rect> vec; Rect rect; rect.id=1; rect.length=2; rect.width=3; vec.push_back(rect); vector<Rect>::iterator it=vec.begin(); cout<<(*it).id<<' '<<(*it).length<<' '<<(*it).width<<endl; return 0; }
3 算法
(1) 使用reverse將元素翻轉(zhuǎn):需要頭文件#include<algorithm>
reverse(vec.begin(),vec.end());將元素翻轉(zhuǎn)(在vector中,如果一個函數(shù)中需要兩個迭代器,
一般后一個都不包含.)
(2)使用sort排序:需要頭文件#include<algorithm>,
sort(vec.begin(),vec.end());(默認是按升序排列,即從小到大).
可以通過重寫排序比較函數(shù)按照降序比較,如下:
定義排序比較函數(shù):
bool Comp(const int &a,const int &b) { return a>b; }
調(diào)用時:sort(vec.begin(),vec.end(),Comp),這樣就降序排序。
以上所述是小編給大家介紹的C++中 vector容器的用法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
C++?LeetCode0538二叉搜索樹轉(zhuǎn)換累加樹示例
這篇文章主要為大家介紹了C++?LeetCode0538二叉搜索樹轉(zhuǎn)換累加樹示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-12-12C++實現(xiàn)LeetCode(161.一個編輯距離)
這篇文章主要介紹了C++實現(xiàn)LeetCode(161.一個編輯距離),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下2021-07-07win10系統(tǒng)下?VS2019點云庫PCL1.12.0的安裝與配置教程
點云庫全稱是Point?Cloud?Library(PCL),是一個獨立的、大規(guī)模的、開放的2D/3D圖像和點云處理項目,這篇文章主要介紹了win10系統(tǒng)下?VS2019點云庫PCL1.12.0的安裝與配置,需要的朋友可以參考下2022-07-07C/C++寬窄字符轉(zhuǎn)換與輸出的多種實現(xiàn)方法
本文主要介紹了C/C++寬窄字符轉(zhuǎn)換與輸出的多種實現(xiàn)方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08C++在成員函數(shù)中使用STL的find_if函數(shù)實例
這篇文章主要介紹了C++在成員函數(shù)中使用STL的find_if函數(shù)實例,包括了STL中find_if函數(shù)的具體用法及相關(guān)的完整實例,非常具有參考借鑒價值,需要的朋友可以參考下2014-10-10Qt出現(xiàn)假死凍結(jié)現(xiàn)象的原因及解決方法
應(yīng)用程序出現(xiàn)假死或凍結(jié)現(xiàn)象通常是由于一些常見問題所導(dǎo)致的,本文主要介紹了Qt出現(xiàn)假死凍結(jié)現(xiàn)象的原因及解決方法,具有一定的參考價值,感興趣的可以了解一下2023-10-10