黄视频网站在线免费观看-黄视频网站在线看-黄视频网站在线观看-黄视频网站免费看-黄视频网站免费观看-黄视频网站免费

千鋒教育-做有情懷、有良心、有品質的職業教育機構

手機站
千鋒教育

千鋒學習站 | 隨時隨地免費學

千鋒教育

掃一掃進入千鋒手機站

領取全套視頻
千鋒教育

關注千鋒學習站小程序
隨時隨地免費學習課程

當前位置:首頁  >  應聘面試  >  物聯網面試題  > STL教程(四):C++ STL常用容器之vector

STL教程(四):C++ STL常用容器之vector

來源:千鋒教育
發布人:syq
時間: 2022-07-11 17:08:00 1657530480

  1、vector容器基本概念

  vector是一種單口的容器,又稱單端動態數組,vector所指的內容是一片連續的空間,支持隨機訪問(Random Access),此外,vector容器的空間是動態增長的。

  2、vector容器本質及其實現

  vector的數據安排以及操作方式,與array非常相似。兩者的唯一差別在于空間的運用的靈活性。

  Array是靜態空間,一旦配置了就不能改變,要換大一點或者小一點的空間,可以,一切瑣碎得由自己來,首先配置一塊新的空間,然后將舊空間的數據搬往新空間,再釋放原來的空間。

  Vector是動態空間,隨著元素的加入,它的內部機制會自動擴充空間以容納新元素。因此vector的運用對于內存的合理利用與運用的靈活性有很大的幫助,我們再也不必害怕空間不足而一開始就要求一個大塊頭的array了。

  Vector的實現技術,關鍵在于其對大小的控制以及重新配置時的數據移動效率,一旦vector舊空間滿了,如果客戶每新增一個元素,vector內部只是擴充一個元素的空間,實為不智,因為所謂的擴充空間(不論多大),一如剛所說,是”配置新空間-數據移動-釋放舊空間”的大工程,時間成本很高,應該加入某種未雨綢繆的考慮,稍后我們便可以看到vector的空間配置策略。

  vector的未雨綢繆機制:當容器滿的時候 會另辟一段空間(大小為2的N次方),將舊空間 的內容 復制 到新空間 然后釋放舊空間。

7

  3、 vector迭代器

  Vector維護一個線性空間,所以不論元素的型別如何,普通指針都可以作為vector的迭代器,因為 vector迭代器所需要的操作行為,如operator, operator->, operator++, operator--, operator+, operator-, operator+=, operator-=, 普通指針天生具備。

  Vector支持隨機存取,而普通指針正有著這樣的能力。所以vector提供的是隨機訪問迭代器(Random Access Iterators).

  使用案例:

#define _CRT_SECURE_NO_WARNINGS #include<iostream>#include<vector> using namespace std; int main(){ 

vector<int> v; 

for (int i = 0; i < 10;i ++)

v.push_back(i);

cout << v.capacity() << endl; // v.capacity()容器的容量

}

system("pause"); 

return EXIT_SUCCESS; }

  4、 vector的數據結構

  Vector所采用的數據結構非常簡單,線性連續空間,它以兩個迭代器Myfirst和Mylast分別指向配置得來的連續空間中目前已被使用的范圍,并以迭代器_Myend指向整塊連續內存空間的尾端。 為了降低空間配置時的速度成本,vector實際配置的大小可能比客戶端需求大一些,以備將來可能的擴充,這邊是容量的概念。換句話說,一個vector的容量永遠大于或等于其大小,一旦容量等于大小,便是滿載,下次再有新增元素,整個vector容器就得另覓居所。

  注意: 所謂動態增加大小,并不是在原空間之后續接新空間(因為無法保證原空間之后尚有可配置的空間),而是一塊更大的內存空間,然后將原數據拷貝新空間,并釋放原空間。因此,對vector的任何操作,一旦引起空間的重新配置,指向原vector的所有迭代器就都失效了。這是程序員容易犯的一個錯誤,務必小心。

  5、vector常用API操作

  5.1vector構造函數

vector<T> v; //采用模板實現類實現,默認構造函數 vector(v.begin(), v.end());//將v[begin(), end())區間中的元素拷貝給本身。 vector(n, elem);//構造函數將n個elem拷貝給本身。 vector(const vector &vec);//拷貝構造函數。 //例子 使用第二個構造函數 我們可以... int arr[] = {2,3,4,1,9}; 

vector<int> v1(arr, arr + sizeof(arr) / sizeof(int));

  5.2vector常用賦值操作

assign(beg, end);//將[beg, end)區間中的數據拷貝賦值給本身。 assign(n, elem);//將n個elem拷貝賦值給本身。

vector& operator=(const vector &vec);//重載等號操作符 swap(vec);// 將vec與本身的元素互換。

  5.3vector大小操作

size();//返回容器中元素的個數 empty();//判斷容器是否為空 resize(int num);//重新指定容器的長度為num,若容器變長,則以默認值填充新位置。如果容器變短, 則末尾超出容器長度的元素被刪除。 resize(int num, elem);//重新指定容器的長度為num,若容器變長,則以elem值填充新位置。如果容 器變短,則末尾超出容器長>度的元素被刪除。 capacity();//容器的容量 reserve(int len);//容器預留len個元素長度,預留位置不初始化,元素不可訪問。

  5.4vector數據存取操作

at(int idx); //返回索引idx所指的數據,如果idx越界,拋出out_of_range異常。operator[];//返回索引idx所指的數據,越界時,運行直接報錯 front();//返回容器中第一個數據元素 back();//返回容器中最后一個數據元素.

  5.5vector插入和刪除操作

insert(const_iterator pos, int count,ele);//迭代器指向位置pos插入count個元素ele. push_back(ele); //尾部插入元素elepop_back();//刪除最后一個元素 erase(const_iterator start, const_iterator end);//刪除迭代器從start到end之間的元素 erase(const_iterator pos);//刪除迭代器指向的元素 clear();//刪除容器中所有元素

  6、vector使用案例

#define _CRT_SECURE_NO_WARNINGS

 #include<iostream>

 #include<vector>

 using namespace std; 

 int main()

 { 

 vector<int> v; 

 for (int i = 0; i < 100000;i ++)

 { 

v.push_back(i); 

 }

 cout << "capacity:" << v.capacity() << endl; 

 cout << "size:" << v.size() << endl; 

 //此時 通過resize改變容器大小

 v.resize(10); 

 cout << "capacity:" << v.capacity() << endl; 

 cout << "size:" << v.size() << endl; 

 //容量沒有改變

 vector<int>(v).swap(v); 

 cout << "capacity:" << v.capacity() << endl; 

 cout << "size:" << v.size() << endl;

system("pause"); 

return EXIT_SUCCESS; }

8

  6.2reserve預留空間

  如果調用reserve函數預留出足夠的空間,可以大大降低空間開辟次數。

#define _CRT_SECURE_NO_WARNINGS

 #include<iostream>

 #include<vector>

 using namespace std;

 int main()

 {

     vector<int> v;

    //預先開辟空間

    //v.reserve(100000);

    int* pStart = NULL;

    int count = 0;

    for (int i = 0; i < 100000;i ++)

    {

        v.push_back(i);

        if (pStart != &v[0])

        {

            pStart = &v[0];

            count++;

        }

    }

    cout << "count:" << count << endl;

    system("pause");

    return EXIT_SUCCESS;

}

 

9

#define _CRT_SECURE_NO_WARNINGS

 #include<iostream>

 #include<vector>

 using namespace std;

 int main()

 {

     vector<int> v;

    //預先開辟空間

    v.reserve(100000);

    int* pStart = NULL;

    int count = 0;

    for (int i = 0; i < 100000;i ++)

    {

        v.push_back(i);

        if (pStart != &v[0])

        {

            pStart = &v[0];

            count++;

        }

    }

    cout << "count:" << count << endl;

    system("pause");

    return EXIT_SUCCESS;}

 

10

  更多關于“物聯網培訓”的問題,歡迎咨詢千鋒教育在線名師。千鋒教育多年辦學,課程大綱緊跟企業需求,更科學更嚴謹,每年培養泛IT人才近2萬人。不論你是零基礎還是想提升,都可以找到適合的班型,千鋒教育隨時歡迎你來試聽

tags:
聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。
10年以上業內強師集結,手把手帶你蛻變精英
請您保持通訊暢通,專屬學習老師24小時內將與您1V1溝通
免費領取
今日已有369人領取成功
劉同學 138****2860 剛剛成功領取
王同學 131****2015 剛剛成功領取
張同學 133****4652 剛剛成功領取
李同學 135****8607 剛剛成功領取
楊同學 132****5667 剛剛成功領取
岳同學 134****6652 剛剛成功領取
梁同學 157****2950 剛剛成功領取
劉同學 189****1015 剛剛成功領取
張同學 155****4678 剛剛成功領取
鄒同學 139****2907 剛剛成功領取
董同學 138****2867 剛剛成功領取
周同學 136****3602 剛剛成功領取
相關推薦HOT
欧美国产日韩在线| 黄视频网站免费| 九九免费高清在线观看视频| 午夜激情视频在线观看| 精品国产一区二区三区久久久狼| 99热热久久| 国产亚洲精品成人a在线| 国产一区二区精品| 一级女性大黄生活片免费| 一级女性全黄生活片免费| 青青久久精品国产免费看| 欧美电影免费看大全| 亚洲wwwwww| 欧美一区二区三区在线观看| 国产91视频网| 国产亚洲精品成人a在线| 久久精品成人一区二区三区| 国产不卡福利| 国产成a人片在线观看视频| 美女免费毛片| 日本伦理网站| 天天做日日爱| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 九九久久国产精品| 午夜欧美成人香蕉剧场| 国产a免费观看| 国产极品白嫩美女在线观看看| 日韩欧美一及在线播放| 精品国产香蕉在线播出| 久久99中文字幕| 精品视频在线观看免费| 可以免费看污视频的网站| 韩国毛片免费| 麻豆网站在线免费观看| 久久精品店| a级黄色毛片免费播放视频| 成人影院久久久久久影院| 国产成人啪精品视频免费软件| 天天做日日爱夜夜爽| 台湾美女古装一级毛片| 国产视频在线免费观看| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 91麻豆精品国产自产在线观看一区 | 九九久久99| 国产成人精品一区二区视频| 免费国产一级特黄aa大片在线| 久久精品免视看国产明星| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 香蕉视频久久| 久久99中文字幕久久| 精品视频在线观看一区二区三区| 欧美大片aaaa一级毛片| 欧美a级成人淫片免费看| 日本免费区| 精品视频免费在线| 国产一区免费在线观看| 国产精品12| 亚洲天堂免费| 国产伦精品一区二区三区无广告| 欧美国产日韩久久久| 黄色短视屏| 日本特黄特色aaa大片免费| 日本在线不卡视频| 97视频免费在线观看| 日韩免费片| 亚洲第一视频在线播放| 国产精品1024在线永久免费 | 国产亚洲免费观看| 日韩专区亚洲综合久久| 91麻豆精品国产片在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 色综合久久天天综合| 999精品视频在线| 亚州视频一区二区| 成人免费观看视频| 日韩免费在线视频| 精品国产一区二区三区精东影业| 国产综合成人观看在线| 久草免费在线观看| 国产国语对白一级毛片| 亚州视频一区二区| 99久久精品国产片| 欧美爱爱动态| 国产成人女人在线视频观看| 国产激情视频在线观看| 999久久久免费精品国产牛牛| 色综合久久天天综合绕观看| 超级乱淫黄漫画免费| 国产91精品一区| 免费一级片网站| 欧美另类videosbestsex| 精品久久久久久免费影院| 香蕉视频久久| 四虎影视久久久免费| 国产伦精品一区二区三区无广告 | 麻豆午夜视频| 午夜欧美福利| 国产91精品一区| 国产伦久视频免费观看视频| 国产麻豆精品免费视频| 一级毛片视频在线观看| 一本高清在线| 国产精品自拍亚洲| 国产91视频网| 九九热国产视频| 日本免费看视频| 成人a级高清视频在线观看| 亚洲 激情| 久久精品免视看国产成人2021| 四虎久久精品国产| 你懂的日韩| 欧美大片aaaa一级毛片| 二级片在线观看| 日韩一级黄色| 免费毛片播放| 亚欧视频在线| 天天色色网| 久久国产精品自由自在| 国产伦久视频免费观看 视频| 你懂的福利视频| 国产成人精品综合在线| 国产原创视频在线| 天堂网中文在线| 国产91素人搭讪系列天堂| 国产不卡福利| 中文字幕97| 欧美电影免费看大全| 国产91素人搭讪系列天堂| 成人免费观看男女羞羞视频| 午夜激情视频在线观看| 国产激情一区二区三区| 亚洲精品影院| 日本在线不卡免费视频一区| 精品国产一区二区三区国产馆| 国产视频一区在线| 国产一区二区高清视频| 国产不卡在线看| 欧美激情影院| 欧美激情一区二区三区中文字幕| 青青久久精品国产免费看| 国产成人啪精品| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产一区二区精品久久| 成人高清免费| 99久久精品国产免费| 亚洲女初尝黑人巨高清在线观看| 毛片高清| 国产伦理精品| 久久国产影院| 成人免费观看视频| 久久久久久久免费视频| 久久久久久久久综合影视网| 美女免费精品高清毛片在线视| 国产视频一区二区在线播放| 国产伦精品一区二区三区无广告 | 99久久精品国产高清一区二区| 麻豆网站在线免费观看| 成人a大片高清在线观看| 日日日夜夜操| 日韩专区亚洲综合久久| 日本免费乱人伦在线观看 | 国产一区二区精品| 999精品视频在线| 国产不卡在线看| 在线观看导航| 国产网站免费在线观看| 国产成人精品一区二区视频| 韩国三级视频在线观看| 日本久久久久久久 97久久精品一区二区三区 狠狠色噜噜狠狠狠狠97 日日干综合 五月天婷婷在线观看高清 九色福利视频 | 国产视频在线免费观看| 免费一级生活片| 亚洲爆爽| 国产视频一区二区在线播放| 亚洲 国产精品 日韩| 久久精品欧美一区二区| 91麻豆国产福利精品| 成人影视在线播放| 日本免费区| 麻豆系列 在线视频| 国产成人精品综合在线| 高清一级淫片a级中文字幕 | 国产欧美精品| 亚洲 国产精品 日韩| 韩国毛片免费| 午夜欧美福利| 国产伦理精品| 日韩在线观看网站| 日本在线www| 亚洲第一页色| 久草免费在线视频| 国产激情视频在线观看| 国产91精品系列在线观看| 九九热国产视频| 亚洲www美色| 你懂的福利视频| 99色吧| 日韩一级黄色| 久久国产精品只做精品| 日本在线www| 高清一级片|