最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C++入門之vector使用詳解

 更新時間:2021年11月18日 15:20:44   作者:捕獲一只小肚皮  
這篇文章主要為大家介紹了C++入門之vector使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助

前言

兜兜轉(zhuǎn)轉(zhuǎn),我們來到了C++的vector章節(jié),今天就講講怎么使用vector吧.

vector的本質(zhì)就是一個線性的順序表,只不過在C++中被弄成了模板,以達(dá)到泛型編程目的.而使用的方面大概包括創(chuàng)建對象,數(shù)據(jù)插入,數(shù)據(jù)刪除,數(shù)據(jù)訪問,迭代器以及容量修改等方面

創(chuàng)建對象

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

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

示例:

vector<int> v1;          //創(chuàng)建int類型順序表 v1;
vector<char> v2;         //創(chuàng)建char類型順序表 v2;
vector<double> v3;       //創(chuàng)建double類型順序表 v3;

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

示例:

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

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

示例:

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

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

示例:

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

迭代器

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

  • 普通迭代器接口:分別是begin()end();其中begin()為首元素位置,end()為末元素位置下一個位置
  • 反轉(zhuǎn)迭代器接口:分別是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

數(shù)據(jù)插入

在數(shù)據(jù)插入方面,C++最常用的兩個函數(shù)接口分別是insert和push_back.前者是在目標(biāo)位置前插入,后者是進(jìn)行尾插;

尾插 ,即對象直接調(diào)用push_back(),然后傳值進(jìn)去.

vector<int> v1;    //先創(chuàng)建一個對象.
v1.push_back(1);   //尾插數(shù)據(jù)1
v1.push_back(2);   //尾插數(shù)據(jù)2
v1.push_back(3);   //尾插數(shù)據(jù)3
// 現(xiàn)在v1的數(shù)據(jù)內(nèi)容情況為 1  2  3

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

  • 在pos位置直接插入一個元素,pos是一個迭代器
  • 在pos位置直接插入n個元素,pos是一個迭代器
  • 在pos位置插入一段區(qū)間(區(qū)間用迭代器表示),pos是一個迭代器

示例:

數(shù)據(jù)刪除

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

尾刪:

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);    //刪除現(xiàn)在容容器的第二個元素3
//目前還剩下元素2 4

容量操作

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

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

重新調(diào)整大小,其中如果傳入的n小于原來的size,那么容器就會縮減到n,同時傳入的另外參數(shù)無效;如果n大于size,就會擴(kuò)大到n,參數(shù)有效,和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);   //現(xiàn)在6大于size:3,所以9有效
//現(xiàn)在內(nèi)容為1 2 3 9 9 9 

獲取容量

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

判斷是否為空

示例:

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

總結(jié)

本篇文章就到這里了,希望能夠給你帶來幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • 利用C語言實(shí)現(xiàn)猜數(shù)字小游戲

    利用C語言實(shí)現(xiàn)猜數(shù)字小游戲

    這篇文章主要為大家詳細(xì)介紹了利用C語言實(shí)現(xiàn)猜數(shù)字小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • 淺析Boost智能指針:scoped_ptr shared_ptr weak_ptr

    淺析Boost智能指針:scoped_ptr shared_ptr weak_ptr

    雖然通過弱引用指針可以有效的解除循環(huán)引用,但這種方式必須在程序員能預(yù)見會出現(xiàn)循環(huán)引用的情況下才能使用,也可以是說這個僅僅是一種編譯期的解決方案,如果程序在運(yùn)行過程中出現(xiàn)了循環(huán)引用,還是會造成內(nèi)存泄漏的
    2013-09-09
  • C++連連看判定圖形消除算法

    C++連連看判定圖形消除算法

    這篇文章主要為大家詳細(xì)介紹了C++連連看判定圖形消除算法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • c_str()的用法詳細(xì)解析

    c_str()的用法詳細(xì)解析

    c_str()就是把string類對象轉(zhuǎn)換成和c兼容的char *類型。這是為了與c語言兼容,在c語言中沒有string類型,故必須通過string類對象的成員函數(shù)c_str()把string 對象轉(zhuǎn)換成c中的字符串樣式
    2013-09-09
  • 深入理解C語言的邏輯控制

    深入理解C語言的邏輯控制

    這篇文章主要介紹了C語言的邏輯控制,對C語言的邏輯控制有較為深入的剖析,需要的朋友可以參考下
    2014-07-07
  • C++中string字符串分割函數(shù)split()的4種實(shí)現(xiàn)方法

    C++中string字符串分割函數(shù)split()的4種實(shí)現(xiàn)方法

    最近筆試經(jīng)常遇到需要對字符串進(jìn)行快速分割的情景,下面這篇文章主要給大家介紹了關(guān)于C++中string字符串分割函數(shù)split()的4種實(shí)現(xiàn)方法,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-06-06
  • Windows下Qt打包自動尋找依賴的DLL

    Windows下Qt打包自動尋找依賴的DLL

    本文介紹了兩種在Windows下使用Qt打包應(yīng)用程序并自動尋找依賴DLL的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-12-12
  • C++基于控制臺實(shí)現(xiàn)的貪吃蛇小游戲

    C++基于控制臺實(shí)現(xiàn)的貪吃蛇小游戲

    這篇文章主要介紹了C++基于控制臺實(shí)現(xiàn)的貪吃蛇小游戲,實(shí)例分析了貪吃蛇游戲的原理與C++實(shí)現(xiàn)技巧,是非常經(jīng)典的游戲算法,需要的朋友可以參考下
    2015-04-04
  • C++讀寫INI配置文件的類實(shí)例

    C++讀寫INI配置文件的類實(shí)例

    這篇文章主要介紹了C++讀寫INI配置文件的類,實(shí)例分析了C++操作ini配置文件的相關(guān)技巧,需要的朋友可以參考下
    2015-06-06
  • C++線性表深度解析之動態(tài)數(shù)組與單鏈表和棧及隊列的實(shí)現(xiàn)

    C++線性表深度解析之動態(tài)數(shù)組與單鏈表和棧及隊列的實(shí)現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了C++實(shí)現(xiàn)動態(tài)數(shù)組、單鏈表、棧、隊列,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05

最新評論

石林| 石林| 县级市| 富宁县| 天长市| 朝阳市| 河曲县| 油尖旺区| 南华县| 安新县| 兰州市| 神池县| 闽清县| 兴仁县| 宁武县| 河间市| 镇江市| 炉霍县| 屏边| 大城县| 莱西市| 大理市| 汉川市| 朝阳区| 阜宁县| 新乡县| 龙川县| 枣庄市| 孙吴县| 泰州市| 修文县| 东辽县| 平邑县| 双城市| 富平县| 鲁甸县| 南江县| 漳浦县| 双城市| 来凤县| 大连市|