• 研一寒假05_vector&array


    #--------------------------------vector&array-------------------------------#

    /* 模板类vector */
    //vector<typeName> vt(n_elem); //创建名为vt的vector对象,它可存储n_elem个类型为typeName的元素,其中(n_elem)可以省略,n-elem可以是变量
    //要使用vector对象,必须包含vector头文件,另外vector包含在名称空间std中,因此可以使用using编译指令、using声明或std::vector
    //vector使用new和delete来管理内存,这种工作是自动完成的
    //vector对象存储在自由存储区(堆)中

    /* 模板类array */
    //array<typeName,n_elem> arr; //创建名为arr的array对象,包含n_elem个类型为typeName的元素,其中n_elem不可省略,且n_elem不可是变量
    //要使用array对象,必须包含头文件array,它也位于名称空间std中
    //array的长度是固定的,和数组一样存储在栈中(静态内存分配)中


    #include <iostream>
    #include <vector>
    #include <array>

    int main()
    {
    using namespace std;

    double a1[4]={1.2,2.4,3.6,4.8}; //声明普通数组a1

    vector<double> a2(4); //创建名为a2的vector对象,其数据类型为double包含4个元素
    a2[0]=1.0/3.0; //给a2的第一个元素赋值
    a2[1]=1.0/5.0; //给a2的第二个元素赋值
    a2[2]=1.0/7.0; //给a2的第三个元素赋值
    a2[3]=1.0/9.0; //给a2的第四个元素赋值

    array<double,4> a3={3.14,2.72,1.62,1.41}; //创建名为a3的array对象,其数据类型为double包含4个元素
    array<double,4> a4; //创建名为a3的array对象,没有初始化
    a4 = a3; //如果存储的数据的个数是一样的,那么可以将一个array对象赋给另一个array对象,但是对于数组,必须逐元素复制数据

    cout<<"a1[2]: "<<a1[2]<<" at "<<&a1[2]<<endl; //&a1[2]表示取数组a1中第三个元素的地址
    cout<<"a2[2]: "<<a2[2]<<" at "<<&a2[2]<<endl; //a2是一个vector对象,可以使用数组表示法来访问各个元素
    cout<<"a3[2]: "<<a3[2]<<" at "<<&a3[2]<<endl; //a3是一个array对象,可以使用数组表示法来访问各个元素
    cout<<"a4[2]: "<<a4[2]<<" at "<<&a4[2]<<endl; //a4是一个array对象,可以使用数组表示法来访问各个元素

    a1[-2]=20.2; //编译器将把这句转换为*(a1-2)=20.2,即找到a1指向的地方,向前移两个double元素,并将20.2存储到目的地,也就是说将20.2存储在数组的外面
    //在这个实例中这个位置位于array对象a3中
    //c++并不检查此类错误
    cout<<"a1[-2]: "<<a1[-2]<<" at "<<&a1[-2]<<endl; //打印a[-2]:20.2 at 0x28ccc8
    cout<<"a3[2]: "<<a3[2]<<" at "<<&a3[2]<<endl; //打印a3[2]:20.2 at 0x28ccc8 巧了,(a1-2)这个地址位于array对象a3中
    cout<<"a4[2]: "<<a4[2]<<" at "<<&a4[2]<<endl; //打印a4[2]:1.62 at 0x28cca8

    //使用at()成员函数,使用at()时候,将在运行期间捕获非法索引,降低意外超界错误概率,但是会使程序运行时间变长
    a2.at(1)=2.3; //给a2的第二个元素赋值为2.3,其中a2是vector对象
    a3.at(2)=2.8; //给a3的第三个元素赋值为2.8,其中a3是array对象


    return 0;
    }

     

    最后编辑于 2019.02.20 15:23  家

     

     

     

     

     

     

     

     

  • 相关阅读:
    Codeforces Round #433 (Div. 1, based on Olympiad of Metropolises) B. Jury Meeting 贪心
    Codeforces Round #433 (Div. 1, based on Olympiad of Metropolises) A. Planning 优先队列
    forms组件的渲染错误信息,全局和局部钩子函数,cookie,session
    ajax处理urlencoded的装饰器,ajax上传文件,分页器组件,forms组件
    初识ajax
    django之手动创建第三张表 常用字段
    django之分组,聚合,F.Q.查询
    django的多表操作
    模板的导入和继承 单标操作
    day80 django模版学习
  • 原文地址:https://www.cnblogs.com/YiYA-blog/p/10458549.html
Copyright © 2020-2023  润新知