C++ primer學習筆記(1)Vector

using 命名空間

我們所使用的庫函數都是屬於命名空間std的,當使用std的cin方法時,需要通過std::cin來調用,當大量調用庫函數時這種調用方法無疑加大了代碼工作量,這時可以在文件頭部添加using聲明

注意頭文件中不應包含using聲明,一般在cpp文件所有引用頭文件之後添加using聲明

using聲明形式如下:
using namespace::name;


標準庫類型vectoer

1、vector是一種容器,也是一個類模板。它並非類型,由vectoer生成的類型必須包括vector中元素的類型,例如vector<int>。
2、vector中的元素是同一類型,vector能容納絕大多數類型的對象作爲其元素,但由於引用不是對象,所以不存在包含引用的vector,其他大多數內置類型(算術類型、字面值常量)和類類(string等)型都可以構成vector對象,組成vector的元素也可以是vector。
3、vector無需事先聲明大小,可動態添加元素。
4、僅當已知vector大小時才能使用vector下標。p3.18
5、vector支持“<””>”等比較的運算符,但注意不是所有容器都支持這種比較運算符,例如迭代器。

初始化vector對象的方法:
vector&lt;T> v1
vector&lt;T> v2(v1)
vector&lt;T> v2=v1
vector&lt;T> v3(n,val)
vector&lt;T> v4(n)
vector&lt;T> v5{a,b,c,...}
<vetor&lt;T> v5={a,b,c,...}

vector支持的操作:
v.empty()
v.size()
v.push_back(t)
v[n]
v1=v2
v1={a,b,c,...}
v1==v2
v1!=v2
<,<=,>,>=


  • p3.16

    vector&lt;int> v1{7,2,53,4};
    int val=v1.size();   #輸出vector大小
    cout&lt;&lt;val&lt;&lt;endl;  
    for (auto i:v1)
    cout&lt;&lt;i&lt;&lt;" ";    #輸出vector元素
    cout&lt;&lt;endl;
    

  • 3.17

    vector&lt;string> s1;
    string word;
    string finish="finish";
    while(getline((cin,word)&&word!=finish)
    s1.push_back()=word;
    int val=s1.size();
    cout&lt;&lt;val&lt;&lt;endl;int k;
    for(k=0;k&lt;val;k++){
    for(auto &i:s1[k])
       i=toupper(i);
    }
    int j;
    for (j=0;j&lt;val;j++)
    cout&lt;&lt;s1[j]&lt;&lt;endl;
    

  • 3.20

        vector&lt;int> v1;
        int ival;
        while (cin >> ival&&ival != 000){
            v1.push_back(ival);
        }
        decltype(v1.size()) size = v1.size(); decltype(v1.size()) k;
        cout &lt;&lt; size &lt;&lt; endl;
        vector&lt;int> v2;
        for (k = 1; k!=size; k++){
            int tmp = v1[k - 1] + v1[k];
            v2.push_back(tmp);    #v2向量用於保存v1前後元素的和
        }
            for (decltype(v2.size()) f = 0; f!=v2.size(); f++)  #循環條件中!=也可用<替代,但注意不是所有容器都支持<、>運算符。
            cout &lt;&lt; v2[f]&lt;&lt; endl;
    }
    

  • p3.20

    vector&lt;int> v1;
    int ival;
    while (cin >> ival&&ival != 000)
        v1.push_back(ival);
    int size = v1.size();
    cout &lt;&lt; size&lt;&lt; endl; int k;
    vector &lt;int> v2;
    for (k = 0; k  &lt; size / 2 ; k++){
            int tmp = v1[k] + v1[size - k - 1];
            v2.push_back(tmp);
    }
    if (v1.size()%2==1)
    {
        v2.push_back(v1[size/2]*2);
    }
    for (decltype(v2.size()) f = 0; f &lt; v2.size(); f++){   #此處不能聲明爲int f,因爲f必須與v2.size()的返回類型一致
        cout &lt;&lt; v2[f] &lt;&lt;endl;
    }
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章