vector理解一波

2021-07-11 15:31:21 字數 3799 閱讀 8638

vector;

標頭檔案:

#include

using namespacestd;

定義:vector《型別》q;//類同於  "型別 q;"

vector《型別》q[1010] //類同於  「型別 q[1010]」

操作:往vector存入乙個個資料:

函式名:w. push_back(資料);

#include

#include

using namespace std;

vectorw;

int main()

int x;

for(inti=0;i<7;i++)

scanf("%d",&x);

w.push_back(x);//在容器的末端塞入資料。這個容器很高階,你就理解為類似陣列的存法。

2.我們來更好地理解vector裡面的東西;

這裡有兩個函式:q.begin(),q.end();

從英文名begin,end很好理解肯定是開頭和結尾;= =廢話。

那麼,我們來看看他是什麼(資料);

#include

#include

#include

using namespacestd;

int main()

vectorw;

for(int i=0;i<7;i++)    //我們把 i 塞進去

w.push_back(i);

printf("begin=%dend=%d\n",w.begin(),w.end());

結果:

很糟糕的資料- -那就是記憶體了。然後end-begin不就是7嘛~~~~~

我們稱w.begin(),w.end()為迭代器(t^t好厲害的東西)迭代器是個所謂的複雜的指標【這裡不多講什麼是迭代器,自己都不知道(啊,丟人..)】,那分別存了什麼值呢?

#include

#include

#include

using namespacestd;

int main()

vectorw;

for(int i=0;i<7;i++)    //我們把 i 塞進去

w.push_back(i);

printf("begin=%dend=%d\n",*w.begin(),*w.end());

結果:

我們很好理解,w.begin()"指向"了第乙個值—0,但是end呢,不是6?w.end()是末尾出去的那個,相當於我們定義陣列a[10],我們在查詢w.end(),就相當於查詢a[10]這個元素。那麼也就是說最後乙個值,就是*(w.end()-1);

#include

#include

#include

using namespacestd;

int main()

vectorw;

for(int i=0;i<7;i++)    //我們把 i 塞進去

w.push_back(i);

printf("begin=%d end=%d 最後乙個是:%d\n",*w.begin(),*w.end(),*(w.end()-1));

結果:

然後就是遍歷:

這裡有乙個函式w.size()指這個vector所存的值的區域大小

#include

#include

#include

using namespacestd;

int main()

vectorw;

for(int i=0;i<7;i++)    //我們把 i 塞進去

w.push_back(i);

printf("size=%d\n",w.size());

結果:

那好,我們就可以遍歷了;

這裡有一種神奇的用法就是,和陣列一樣的!!!為什麼呢?t^t不知道啊;

#include

#include

#include

using namespacestd;

int main()

vectorw;

for(int i=0;i<7;i++)    //我們把 i 塞進去

w.push_back(i);

for(int j=0;jprintf("第%d個=%d\n",j+1,w[j]);

結果:

還有一種就是我們知道,w.begin(),w.end()是[迭代器](一種複雜的【指標】),那麼我們用同樣的【迭代器】去遍歷,也可以吧;

定義:vector::iterator b;

#include

#include

#include

using namespacestd;

int main()

vectorw;

for(int i=0;i<7;i++)    //我們把 i 塞進去

w.push_back(i);

vector::iterator b;

int cont=1;

for(b=w.begin();b!=w.end();b++)

printf("第%d個=%d\n",cont++,*b);

結果:

還有就是清空:

w.clear();

#include

#include

#include

using namespacestd;

int main()

vectorw;

for(int i=0;i<7;i++)    //我們把 i 塞進去

w.push_back(i);

vector::iterator a;

int cont=1;

for(a=w.begin();a!=w.end();a++)

printf("第%d個=%d\n",cont++,*a);

w.clear();

printf("begin=%dend=%d\n",w.begin(),w.end());

if(w.begin()==w.end())

printf("清空啦啦啦啦!!!\n");

vector::iterator b;

cont=1;

for(b=w.begin();b!=w.end();b++)

printf("第%d個=%d\n",cont++,*b);

結果:

ok,其他還有很多什麼翻轉啊,很高階的東西,試一試就什麼都知道了。

vector理解一波

vector 標頭檔案 include using namespacestd 定義 vector 型別 q 類同於 型別 q vector 型別 q 1010 類同於 型別 q 1010 操作 往vector存入乙個個資料 函式名 w.push back 資料 include include usi...

IT屋一波解答

viewpager 包裹fragment時,重新整理資料問題 1.setuservisiblehint 方法在oncreateview 之前呼叫,所以會throw nullpointexception 2.設定預載入,在viewpager中,現在的版本已經預設是1了。可以設定為mvphome.set...

安利一波TabNine

外網上看到tabnine的推薦,安裝試了一下,剛開始覺得幫助不大,乙個上午的使用之後就發現真的太ai了,我tornado習慣手寫sql語句,tabnine能夠幫助我直接補全模板。當然好處不止這些,使用的越久,他的深度學習演算法越能夠掌握你的 風格,自動幫你補全 我使用的intellij系的ide,此...