<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ~~~ <span style="font-family: Arial; ">在此總結一下模板vector的使用介紹</span> ~~~ 標準庫vector類型使用需要的頭文件:#include <vector>。vector 是一個類模板。不是一種數據類型,vector<int>是一種數據類型。它比數組更加方便使用。 ## 一、vector定義和初始化 - vector< 類型 > 標識符(最大容量,初始所有值);例如 vector<int> vi(10,2) ? ? ?//有十個元素,初始值都是2 - vector< typeName > vi(n); //vi含有n個值為0的元素 ?例如 vector<int> vi(10) ? ?//有十個元素,初始值都是該容器的默認值,整形是0 - vector<typeName>v2(v1); 或v2=v1;或vector<typeName> v2(v1.begin(), v1.end());//v2是v1的一個副本 - vector< typeName > v1;?????? //默認v1為空, - int a[4]={0,1,2,3}; vector<int> v5(a,a+5);//v5的size為5,v5被初始化為a的5個值。后一個指針要指向將被拷貝的末元素的下一位置。 - 還有一種較為特殊,列表初始化(使用中括號來初始化) ?vector<int> v{10}; ? ? //模板只有一個元素,初始值為10,此種方法一定要和值初始化(使用圓括號初始化分別開),此定義模板方法在只有C++11的規則下才可以 ## 二、vector中壓入元素,輸出元素操作 我們可以在程序運行時壓入元素,此時我們要使用 ?push_back()語句 ~~~ - ? ? ? ?vector<string> str; string text; while(cin>>text) { str.push_back(text); } ?//各元素之間以空白字符為間隔(制表符,空格,回車 都是空白字符) - 壓入元素后我們就要輸出它,此時我們可以利用C++迭代器來一次遍歷的輸出它 ? ?? (1)vector<int> vi; for(int i=0;i<100;i++) ? ? ? ? ? ?vi.push_back(i); ? ?//壓入一百個與元素 ? ? ? auto i=vi.size(); ? ? ? ? ? ?//size(),返回模板中元素的個數 (下面三.3有解釋) ??cout<<i<<endl; ?? ? ? ? for(auto b=vi.begin();b<vi.end();b++) ? ? //使用C++迭代器 ??cout<<*b<<endl;? ? ? ? (2)我們還可以使用下標來輸出,例如 ? ? ? ? ?for(int i=0;i<vi.size();i++) ?//使用下標輸出 cout<<vi[i]<<endl; ~~~ ## 三 ?對vector操作的一些函數 1. ??v[n]?????????? 返回v中位置為n的元素 1. ?v.empty()???? 判斷vector是否為空 1. ?v.size()??????? 返回容器中數據的個數,size返回相應vector類定義的size_type的值。我們可以使用auto類型,從而不必擔心我們定義的類型(上面程序有演示) ? 1. ?v.pop_back()??? 刪除容器的末元素,并不返回該元素。 1. v.push_back(t)??? 在容器的最后添加一個值為t的數據,容器的size變大。 1. v.erase(pointer1,pointer2) 刪除pointer1到pointer2中間(包括pointer1所指)的元素。 1. v.resize(2*v.size, 10) 將v的容量翻2倍(并把新元素的值初始化為10) 1. v1==v2????????? 判斷v1與v2是否相等。!=、<、<=、>、>=????? 保持這些操作符慣有含義(使用的邏輯和普通的一樣,我們可以對比C++string) 1. v.clear()????? 刪除容器中的所有元素。 下面根據以上的函數,編寫一個程序當用例,使用起來更加清晰 ~~~ #include<iostream> #include<string> #include<vector> #include<cctype> using namespace std; int main() { vector<int> vi; for(int i=0;i<20;i++) vi.push_back(i); //壓入元素。向模板的底端 decltype(vi.size()) size=vi.size(); //使用decltype 定義一個與vi.size()類型一樣的變量 ,模板中對象的個數 cout<<"the vector's capacity is"<<size<<endl; vi.pop_back(); //刪除容器中最后一個元素 19 for(auto i=vi.begin();i!=vi.end();i++) //輸出模板中的元素 cout<<*i<<endl; for(int i=0;i<19;i++) //使用下標輸出 cout<<vi[i]<<endl; vi.resize(vi.size()*2,12);//長度變成兩倍,并主動為后增加的賦值為12 cout<<"NOW the vector's capacity is"<<vi.size()<<endl; for(auto i=vi.begin();i!=vi.end();i++) cout<<*i<<endl; vi.clear(); // 刪除容器中的所有元素 cout<<"After clear , the vector's capacity is"<<vi.size()<<endl; //使用C++迭代器類型遍歷每一個元素 vector<string> s(10,"hello"); vector<string>::iterator i; for(i=s.begin();i!=s.end();i++) cout<<*i<<endl; s.pop_back(); //刪除容器中最后一個元素 cout<<"After pop_back , the vector's capacity is"<<s.size()<<endl; return 0; } ~~~ 以上部分結果截圖如下 ![](https://box.kancloud.cn/2016-02-17_56c446a8b81b7.jpg) ![](https://box.kancloud.cn/2016-02-17_56c446a8c841f.jpg) ![](https://box.kancloud.cn/2016-02-17_56c446a8d4f07.jpg) ## 四?關于vector的迭代器類型 1. 每種容器類型都定義了自己的迭代器類型,如vector: vector<int>::iterator iter;這條語句定義了一個名為iter的變量,它的數據類型是由vector<int>定義的iterator類型。 1. 使用迭代器讀取vector中的每一個元素: ~~~ vector<int> ivec(10,1); for(vector<int>::iterator iter=ivec.begin();iter!=ivec.end();++iter) { ?cout<<*iter<<endl;; //使用 * 訪問迭代器所指向的元素 } ~~~ 我們可以定義vector<int>::iterator,同時我么也可以定以如下vector<int>::?const_iterator ,只能讀取容器中的元素,而不能修改。 iterator除了進行++,--操作,可以將iter+n,iter-n賦給一個新的iteraor對象。還可以使用一個iterator減去另外一個iterator. const vector<int>::iterator newiter=ivec.begin(); vector<int>::iterator newiter2=ivec.end(); cout<<"\n"<<newiter2-newiter;? 一個完整的程序 ~~~ 1 #include <vector> 2 #include <iostream> 3 4 using namespace std; 5 6 int main() { 7 vector<int> ivec; 8 ivec.push_back(1); 9 ivec.push_back(2); 10 ivec.push_back(3); 11 ivec.push_back(4); 12 13 for(vector<int>::iterator iter = ivec.begin();1. iter != ivec.end(); ++iter) 14 cout << *iter << endl; 15 } ~~~ 以上是vector的一些使用的知識點,希望對大家有用![微笑](https://box.kancloud.cn/2016-01-18_569ca449c5105.gif)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看