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;
    }
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值