中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用C++的vector

發布時間:2021-11-18 16:46:31 來源:億速云 閱讀:126 作者:iii 欄目:開發技術

本篇內容介紹了“如何使用C++的vector”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

創建對象

在C++中,官方文檔所給的創建對象方法有4-6種,博主這里便介紹其中最常用的4種,同時博主為了大家先能夠簡單使用,會省去一些與源文檔不一樣的地方.

直接創建,即和類定義對象一樣,官方聲明為:explicit vector ();,其中explict是指不支持隱式類型轉換.

示例:

vector<int> v1;          //創建int類型順序表 v1;
vector<char> v2;         //創建char類型順序表 v2;
vector<double> v3;       //創建double類型順序表 v3;

通過傳n個val值定義對象,達到一創建對象就具有n個val,官方聲明為:explicit vector (size_type n, const value_type& val = value_type();,其中value_type就是我們需要的類型…

示例:

vector<int> v1(10,9);    //創建int類型順序表v1,里面有10個9;
vector<int> v2(v1.begin(),v1.begin()+6);   //創建int類型順序表v2,里面有6個9;

通過迭代器區間形式創建對象,官方聲明為:template <class InputIterator> vector (InputIterator first, InputIterator last).

示例:

vector<int> v1(10,9);    //創建int類型順序表v1,里面有10個9;
vector<int> v2(v1.begin(),v1.begin()+6);   //創建int類型順序表v2,里面有6個9;

通過現成的同類型對象創建對象,官方聲明為:vector (const vector& x);.

示例:

vector<char> v1(10,9);   //通過前面的方法創建一個對象;
vector<char> v2(v1);     //創建對象v2,其內容與v1一模一樣.

迭代器

在經過前幾節的string洗禮,相信大家對迭代器也算比較了解,這里就直接開門見山的介紹用法吧:

  • 普通迭代器接口:分別是begin()end();其中begin()為首元素位置,end()為末元素位置下一個位置

  • 反轉迭代器接口:分別是rbegin()和rend();其中rbegin()是末元素位置,rend()是首元素前一個位置.

示例:

vector<int> v1;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v1.push_back(4);    //這四個步驟大概意思為插入 1 2 3 4
vector<int>::iterator it = v1.begin();
while(it != v1.end()) 
{
    cout<<*it<<" ";
}
cout<<endl;              //到這一步會輸出 1 2 3 4
it = v1.rbegin();
while(it != rend())
{
    cout<<*it<<" ";
}
cout<<endl;              //到這一步會輸出4 3 2 1

數據插入

在數據插入方面,C++最常用的兩個函數接口分別是insert和push_back.前者是在目標位置前插入,后者是進行尾插;

尾插 ,即對象直接調用push_back(),然后傳值進去.

vector<int> v1;    //先創建一個對象.
v1.push_back(1);   //尾插數據1
v1.push_back(2);   //尾插數據2
v1.push_back(3);   //尾插數據3
// 現在v1的數據內容情況為 1  2  3

而任意位置插入最常用的有3種,分別是

  • 在pos位置直接插入一個元素,pos是一個迭代器

  • 在pos位置直接插入n個元素,pos是一個迭代器

  • 在pos位置插入一段區間(區間用迭代器表示),pos是一個迭代器

示例:

數據刪除

在刪除數據方面,主要有兩個接口,分別是erase()和pop_back(),前者是給一個迭代器,然后刪除.后者是尾刪,不需要參數

尾刪:

vector<int> v1;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v1.push_back(4);
v1.pop_back();  //尾刪元素4
v1.pop_back();  //尾刪元素3
v1.pop_back();  //尾刪元素2
//目前該容器還剩下元素 1

傳迭代器形式刪除

vector<int> v1;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v1.push_back(4);
v1.erase(v1.begin());      //刪除第一個元素1
v1.erase(v1.begin()+1);    //刪除現在容容器的第二個元素3
//目前還剩下元素2 4

容量操作

在這方面,c++提供了size(),resize(),capacity(),empty()幾個常用操作.

  • 獲取目前元素數量

vector<int> v1;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v1.push_back(4);
v1.size();   //獲取到元素數量為4個

重新調整大小,其中如果傳入的n小于原來的size,那么容器就會縮減到n,同時傳入的另外參數無效;如果n大于size,就會擴大到n,參數有效,和string的使用一樣. 官方文檔為:void resize (size_type n, value_type val = value_type());

示例:

vector<int> v1;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
v1.push_back(4);
v1.resize(3,0);   //只會縮減到3個size,傳入的另一個0無效
v1.resize(6,9);   //現在6大于size:3,所以9有效
//現在內容為1 2 3 9 9 9

獲取容量

vector<int> v1;
v1.capacity();  //注意哦~,這個容量和size并不一樣.

判斷是否為空

示例:

vector<int> v1;
if(v1.empty())
{
    cout<<"容易為空"<<endl;
}
else
{
    cout<<"容器不為空"<<endl;
}

“如何使用C++的vector”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

武定县| 庆元县| 巩义市| 齐齐哈尔市| 平陆县| 茶陵县| 冷水江市| 嘉兴市| 洛隆县| 齐河县| 海阳市| 漳浦县| 乐山市| 伽师县| 襄汾县| 双桥区| 望谟县| 娄烦县| 邳州市| 永丰县| 进贤县| 平阳县| 通河县| 台北县| 鄂温| 宁南县| 曲阜市| 晋中市| 馆陶县| 米林县| 黄石市| 庆安县| 祥云县| 景德镇市| 宁城县| 新和县| 汕尾市| 时尚| 黄冈市| 三原县| 武义县|