国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

當(dāng)前位置: 首頁 > news >正文

內(nèi)蒙古城鄉(xiāng)建設(shè)網(wǎng)站換名字了網(wǎng)絡(luò)推廣渠道都有哪些

內(nèi)蒙古城鄉(xiāng)建設(shè)網(wǎng)站換名字了,網(wǎng)絡(luò)推廣渠道都有哪些,云服務(wù)器是否可以做多個網(wǎng)站,宜興市做網(wǎng)站本篇我們來介紹STL的vector的內(nèi)容。vector其實就是順序表&#xff0c;vector的學(xué)習(xí)還是分為接口使用和模擬實現(xiàn)兩大部分&#xff0c;本片就是介紹一下vector的使用。 1.vector的介紹及使用 vector文檔介紹&#xff1a;vector - C Reference 在使用時需要加頭文件#include <…

?????????本篇我們來介紹STL的vector的內(nèi)容。vector其實就是順序表,vector的學(xué)習(xí)還是分為接口使用模擬實現(xiàn)兩大部分,本片就是介紹一下vector的使用。

1.vector的介紹及使用

vector文檔介紹:vector - C++ Reference? 在使用時需要加頭文件#include <vector>.

vector是一個標準的模板。不知道什么是模板去看【C++】模板(初識):函數(shù)模板、類模板-CSDN博客

第一個模板參數(shù)是要存的數(shù)據(jù)類型,第二個模板參數(shù)是一個空間配置器,就是一個內(nèi)存池,現(xiàn)在不用關(guān)心他是什么。?

我們在vector學(xué)習(xí)時一定要學(xué)會查文檔。

string因為一些發(fā)展歷史的原因,設(shè)計的接口比較多,比較冗余,vector相對來說就好很多,接口比string少很多。我們還是重點說經(jīng)常使用的接口。

2.vector的構(gòu)造函數(shù)、析構(gòu)函數(shù)和operator=

構(gòu)造函數(shù)

比如說下面的存int類型的順序表。

vector<int> v1; //無參構(gòu)造
vector<int> v2(10, 1); //10個1初始化
vector<int> v3(v2.begin(), v2.end());//迭代器區(qū)間初始化
vector<int> v4(++v2.begin(), --v2.end());//迭代器區(qū)間初始化

析構(gòu)函數(shù)自動調(diào)用。

?

賦值運算符重載。

vector<int> v1; //無參構(gòu)造
vector<int> v2(10, 1); //10個1初始化
vector<int> v3(v2.begin(), v2.end());//迭代器區(qū)間初始化
vector<int> v4(++v2.begin(), --v2.end());//迭代器區(qū)間初始化
v4 = v2; //v2,v4已存在,是賦值

3.vector的遍歷

vector的遍歷和string一樣有三種方式:下標遍歷、迭代器、范圍for。這三種遍歷詳細的介紹在string類里面【C++】string類接口使用(萬字詳解)_sting怎么用-CSDN博客?第2.5節(jié)(string類對象的訪問及遍歷操作),不管是string還是vector,迭代器和范圍for的用法都是一樣的,類域不同而已,如果不清楚的建議先看string的2.5節(jié)。

3.1 下標遍歷

vector<int> v2(10, 1); //10個1初始化
for (int i = 0; i < v2.size(); i++)
{cout << v2[i] << " ";
}
cout << endl;

因為vector也重載了operator[],所以也可以通過下標遍歷。

3.2 迭代器

vector<int> v2(10, 1); //10個1初始化
vector<int>::iterator it = v2.begin();
while (it != v2.end())
{cout << *it << " ";++it;
}
cout << endl;

這里vector的迭代器要指定vector::類域,我們說string的迭代器的時候也是指定了string::類域。

反向迭代器和const迭代器就不演示了。?

3.3 范圍for

vector<int> v2(10, 1); //10個1初始化
for (auto e : v2)
{cout << e << " ";
}
cout << endl;

?

?

4.reserve

這個部分別的接口就不多說了,看一眼就知道是什么。我們來說一下reserve擴容。

?用法大家都知道,我們看一下擴容機制,是不是一直按1.5倍擴。

void TestVectorExpandOP()
{vector<int> v;size_t sz = v.capacity();cout << "making bar grow:\n";for (int i = 0; i < 100; ++i){v.push_back(i);if (sz != v.capacity()){sz = v.capacity();cout << "capacity changed: " << sz << '\n';}}
}
int main()
{TestVectorExpandOP();return 0;
}

大概是1.5倍,有的地方做了特殊處理,比如向上取整,向下取整。

解決辦法就是提前開空間,提前就開100個。

void TestVectorExpandOP()
{vector<int> v;size_t sz = v.capacity();v.reserve(100);   // 提前將容量設(shè)置好,可以避免一遍插入一遍擴容cout << "making bar grow:\n";for (int i = 0; i < 100; ++i){v.push_back(i);if (sz != v.capacity()){sz = v.capacity();cout << "capacity changed: " << sz << '\n';}}
}

同樣的,我們傳n過去,編譯器會開大于等于n的空間。

但是對于下面的第二種情況,string和vector處理方式不同。

?

5.resize

reserve是絕對不會改變size的,只會對capacity產(chǎn)生影響,但是resize會改變size,還會改變capacity。

?

?第二個參數(shù)val傳的話,多出來的所有都存為val。直接代碼演示。

vector<int> v(10, 1);//10個1初始化
v.resize(5); //n<size情況

?

vector<int> v(10, 1);//10個1初始化
v.reserve(20);//開20個空間
//size < n < capacity,不傳第二個參
v.resize(15); 

?

vector<int> v(10, 1);//10個1初始化
v.reserve(20);//開20個空間
//size < n < capacity,傳第二個參
v.resize(15, 2); 

vector<int> v(10, 1);//10個1初始化
v.reserve(20);//開20個空間
//n > capacity,不傳第二個參
v.resize(23); 

?

vector<int> v(10, 1);//10個1初始化
v.reserve(20);//開20個空間
//n > capacity,傳第二個參
v.resize(23, 2); 

?resize大概就是這樣。

6.insert和erase

尾插和尾刪就不多說了,這里說一下insert。

vector的insert不支持下標了,都是迭代器。

vector<int> v(10, 1);
v.insert(v.begin(), 2);//頭插
v.insert(v.end(), 3);//尾插

?

vector<int> v(10, 1);
v.insert(v.begin(), 2);//頭插
v.insert(v.end(), 3);//尾插
v.insert(v.begin() + 3, 4);//第3個位置插入

?

?

?erase也不支持下標,只支持迭代器。

vector<int> v(10, 1);
v.insert(v.begin(), 2);//頭插
v.insert(v.end(), 3);//尾插
v.insert(v.begin() + 3, 4);//第3個位置插入
v.erase(++v.begin());//刪第2個位置數(shù)據(jù)

?

7.vector支持流插入和流提取嗎?

不支持。我們會發(fā)現(xiàn)vector文檔里面并沒有重載<<和>>,因為vector的輸入輸出有很多不確定性。

這個要注意一下。

別的接口就不多說了,很多和string接口用法一致。所以一定要打好string的基礎(chǔ),vector學(xué)起來就比較輕松?!綜++】string類接口使用(萬字詳解)_sting怎么用-CSDN博客

http://m.aloenet.com.cn/news/39641.html

相關(guān)文章:

  • 網(wǎng)站開發(fā)工程師的要求站長工具站長之家官網(wǎng)
  • 成都網(wǎng)站開發(fā)排名廈門關(guān)鍵詞排名優(yōu)化
  • 北京網(wǎng)站設(shè)計首選 新鴻儒360免費建站教程
  • wordpress標簽生成圖片基礎(chǔ)建站如何提升和優(yōu)化
  • wordpress 連接后臺關(guān)鍵詞優(yōu)化公司費用多少
  • 網(wǎng)站內(nèi)移動的圖片怎么做的深圳網(wǎng)絡(luò)優(yōu)化公司
  • 公司備案網(wǎng)站負責(zé)人是誰網(wǎng)站推廣軟件哪個好
  • 淄博張店做網(wǎng)站的公司百度網(wǎng)站客服電話
  • 網(wǎng)站建設(shè)新聞發(fā)布注意事項互聯(lián)網(wǎng)怎么賺錢
  • 建設(shè)網(wǎng)站的英語怎么說做網(wǎng)站的網(wǎng)絡(luò)公司
  • 微信小程序頁面模板seo文章是什么
  • 廣水市建設(shè)局網(wǎng)站線上培訓(xùn)
  • 建設(shè)網(wǎng)站的方案什么叫做優(yōu)化
  • rust做網(wǎng)站微商引流被加方法精準客源
  • 如何建設(shè)成為營銷網(wǎng)站百度客服電話24小時人工服務(wù)熱線
  • 向日葵域名怎么做網(wǎng)站成都網(wǎng)站搭建優(yōu)化推廣
  • 手機動態(tài)網(wǎng)站開發(fā)教程網(wǎng)絡(luò)營銷的四大特點
  • 如何做網(wǎng)站本地服務(wù)器嗎廣告投放策略
  • 江蘇省建設(shè)人才網(wǎng)站軟文文案案例
  • 蘭州新站seo如何找推廣平臺
  • 假網(wǎng)站怎么做呢百度信息流投放技巧
  • 怎么提高網(wǎng)站曝光武漢seo優(yōu)化服務(wù)
  • 高能建站系統(tǒng)怎么收費查詢網(wǎng)站流量的網(wǎng)址
  • 網(wǎng)站備案沒公司網(wǎng)絡(luò)口碑營銷的成功案例
  • 主流跨境電商平臺有哪些?山東服務(wù)好的seo
  • 做酒店網(wǎng)站的公司百度一下子就知道了
  • 個人網(wǎng)站怎么做視頻人工智能培訓(xùn)心得
  • 北京網(wǎng)頁制作網(wǎng)站搜索引擎網(wǎng)站優(yōu)化推廣
  • 專用主機網(wǎng)站建設(shè)企業(yè)郵箱域名
  • 鹽城網(wǎng)站建設(shè)流程百度在線使用網(wǎng)頁版