日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程语言 > c/c++ >内容正文

c/c++

C++总结篇(5)vector

發(fā)布時(shí)間:2025/3/11 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++总结篇(5)vector 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

vector是表示可變大小數(shù)組的序列容器。就像數(shù)組一樣,vector也采用的連續(xù)存儲(chǔ)空間來(lái)存儲(chǔ)元素。也就是意味著可以采用下標(biāo)對(duì)vector的元素 進(jìn)行訪問(wèn),和數(shù)組一樣高效。但是又不像數(shù)組,它的大小是可以動(dòng)態(tài)改變的,而且它的大小會(huì)被容器自動(dòng)處理。

Vector迭代器:

  • begin+end: begin獲取第一個(gè)位置的迭代器,end獲取最后一個(gè)數(shù)據(jù)下一個(gè)位置的迭代器。
  • rbegin+rend: rbegin獲取最后一個(gè)位置的迭代器,rend獲取第一個(gè)位置前一個(gè)位置的迭代器
  • 如例:

    void test1(vector<int> &vec) {vector<int>::iterator it = vec.begin();while (it != vec.end()){cout << *it << endl;it++;} }void test2(vector<int> &vec) {vector<int>::reverse_iterator rit = vec.rbegin();while (rit != vec.rend()){cout << *rit << endl;rit++;} }int main() {vector<int>vec(4,10);vec.push_back(1);vec.push_back(2);vec.push_back(3);vec.push_back(4);test1(vec);test2(vec);system("pause");return 0; }

    Vector空間增長(zhǎng)

    size 獲取數(shù)據(jù)個(gè)數(shù) capacity 獲取容量大小 empty 判斷是否為空 resize 改變vector的size reserve 改變vector放入capacity

    如例:

    void test(vector<int> &vec) {cout << vec.size() << endl;//獲取有效數(shù)據(jù)的大小cout << vec.capacity() << endl;//獲取容量的大小cout << vec.empty() << endl;//檢查空間是否為空vec.resize(5);//改變有效數(shù)據(jù)的大小為5vec.reserve(15);//改變空間的大小為15cout << vec.size() << endl;cout << vec.capacity() << endl;//打印數(shù)據(jù)vector<int>::iterator it = vec.begin();while (it != vec.end()){cout << *it << endl;it++;}vec.clear();//清空cout << vec.size() << endl;cout << vec.capacity() << endl;cout << vec.empty() << endl; }

    Vector的增刪查改

    push_back 尾插 pop_back 尾刪 insert 在指定位置插入val erase 刪除指定位置的數(shù)據(jù) swap 交換兩個(gè)vector的數(shù)據(jù)空間 operator[] 像數(shù)組一樣訪問(wèn)

    如例:

    vector<int>::iterator find(vector<int>::iterator begin, vector<int>::iterator end,int n) {for (; begin != end&&n; begin++, n--);return begin; }void test(vector<int> &vec) {vec.push_back(5);//尾插一個(gè)數(shù)據(jù)5vec.pop_back();//從尾刪除一個(gè)數(shù)據(jù)vector<int>::iterator pos = find(vec.begin(), vec.end(), 2);//查找第2個(gè)位置數(shù)據(jù)的迭代器并返回給posvec.insert(pos, 12);//在pos位置插入數(shù)據(jù)12vec.erase(pos);//刪除pos位置的數(shù)據(jù)//新建一個(gè)vector容器v并插入數(shù)據(jù)vector<int> v;v.push_back(5);v.push_back(6);v.push_back(7);v.push_back(8);swap(v, vec);//交換v與vec的數(shù)據(jù)cout << vec.operator[](1)<<endl;//打印vec中位置為1處的數(shù)據(jù) }

    迭代器失效

    插入數(shù)據(jù)迭代器失效
    當(dāng)在pos位置插入數(shù)據(jù)操作時(shí),insert會(huì)使vector擴(kuò)容,一旦擴(kuò)容,pos指向的位置會(huì)被釋放,故而無(wú)法對(duì)其訪問(wèn)。
    Vector擴(kuò)容并不是在原有的基礎(chǔ)上增大空間,而是重新開(kāi)辟一個(gè)合適大小的空間,在將原來(lái)vector中的數(shù)據(jù)移到新開(kāi)辟的vector中,再將原來(lái)vector的釋放掉。

    如例:

    vector<int>::iterator find(vector<int>::iterator begin, vector<int>::iterator end, int n) {for (; begin != end&&n; begin++, n--);return begin; }void test(vector<int> &vec) {vec.push_back(1);vec.push_back(2);vec.push_back(3);vec.push_back(4);vec.push_back(5);cout << vec.size() << endl;cout << vec.capacity() << endl;vector<int>::iterator pos = find(vec.begin(), vec.end(), 3);vec.insert(pos, 11);cout << *pos << endl;//出錯(cuò) }

    刪除指定位置數(shù)據(jù)迭代器失效

    將pos位置的數(shù)據(jù)刪除掉,即將該數(shù)據(jù)存放的空間時(shí)放掉,在對(duì)該位置進(jìn)訪問(wèn)即為非法訪問(wèn)。

    如例:

    vector<int>::iterator find(vector<int>::iterator begin, vector<int>::iterator end, int n) {for (; begin != end&&n; begin++, n--);return begin; }void test(vector<int> &vec) {vec.push_back(1);vec.push_back(2);vec.push_back(3);vec.push_back(4);vec.push_back(5);cout << vec.size() << endl;cout << vec.capacity() << endl;vector<int>::iterator pos = find(vec.begin(), vec.end(), 3);vec.erase(pos);cout << *pos << endl;//出錯(cuò) } 創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)

    總結(jié)

    以上是生活随笔為你收集整理的C++总结篇(5)vector的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。