C++ primer学习笔记(1)Vector

本文深入探讨了C++中的vector容器,解释了它的定义、特性、初始化方式及常用操作方法,旨在帮助开发者高效利用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;
    }
    
乐播投屏是一款简单好用、功能强大的专业投屏软件,支持手机投屏电视、手机投电脑、电脑投电视等多种投屏方式。 多端兼容与跨网投屏:支持手机、平板、电脑等多种设备之间的自由组合投屏,且无需连接 WiFi,通过跨屏技术打破网络限制,扫一扫即可投屏。 广泛的应用支持:支持 10000+APP 投屏,包括综合视频、网盘与浏览器、美韩剧、斗鱼、虎牙等直播平台,还能将央视、湖南卫视等各大卫视的直播内容一键投屏。 高清流畅投屏体验:腾讯独家智能音画调校技术,支持 4K 高清画质、240Hz 超高帧率,低延迟不卡顿,能为用户提供更高清、流畅的视觉享受。 会议办公功能强大:拥有全球唯一的 “超级投屏空间”,扫码即投,无需安装。支持多人共享投屏、远程协作批注,PPT、Excel、视频等文件都能流畅展示,还具备企业级安全加密,保障会议资料不泄露。 多人互动功能:支持多人投屏,邀请好友加入投屏互动,远程也可加入。同时具备一屏多显、语音互动功能,支持多人连麦,实时语音交流。 文件支持全面:支持 PPT、PDF、Word、Excel 等办公文件,以及视频、图片等多种类型文件的投屏,还支持网盘直投,无需下载和转格式。 特色功能丰富:投屏时可同步录制投屏画面,部分版本还支持通过触控屏或电视端外接鼠标反控电脑,以及在投屏过程中用画笔实时标注等功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值